Clojure Tutorial Part 4 -- 스트링 라이브브라리를 使ってみる
14303 단어 clojure
参考
https://clojure.org/guides/repl/basic_usage#_example_using_clojure_string
Clojure の公式츄트리알
기본 사용법 の 문자열 編.
문자열 のライブラリを読み込んで 대문자 を試す
今回も clj 코만드데타미날로 CLI を動かす
( require '[clojure.string])
(clojure.string/upper-case "abCd")
"ABCD"
数値の計算と違って,require でライブラリを呼び出す必要がある
Django REST Framework를 사용하여 시간을 활용하세요
しかし、JS や PY とは違って '라이브러리/디테일' のように
싱르크 ォートで括ることはしない.始まりだけだ.終わりはない.
終わりなき戦いが始まる、そういうメッセージなのかもしれない.
https://stackoverflow.com/a/34118964
そんなことはなくて名前空間のshinbolになっているだけだった.
そして require でinport した ライブラリとその中身の関数を
四則演算のように使って引数を処理する.ただし引数はいつも 1 つ!
:as を使って라이브라리명을 別名으로 import する
(require '[clojure.string :as customName])
(customName/upper-case "hoge")
"HOGE"
라이브라리네임은
:as
を使うことで自由な名前으로 import できる.関数名は変えられないと予想.
:refer [function-name] で関数を直接呼び出せるようにする
(require '[clojure.string :refer [upper-case]])
(upper-case "toUpperCaseOnly")
"TOUPPERCASEONLY"
:refer [function-name]
(을)를 사용해서ライブラリの中の関数のみ
四則演算の関数 (+,-) のように使うことができるようになる.
에라가 起きる事例
(upper-case "toUpperCaseOnly" "second value" "Third Value")
Execution error (ArityException) at user/eval17 (REPL:1).
複数の引数をまとめて処理する ことはできない.
(upper-case 'single')
"SINGLE'"
JS と違って싱글크ォートは括ったものを文字列とみなす処理にはならない.
括れないという点では : (코론) と似たような扱いなのだろうか?
:참조 와 :all で関数を全て import する
(upper-case "quote")
Syntax error compiling at (REPL:1:1).
Unable to resolve symbol: upper-case in this context
user=> (require '[clojure.string :refer :all])
WARNING: reverse already refers to: #'clojure.core/reverse in namespace: user, being replaced by: #'clojure.string/reverse
WARNING: replace already refers to: #'clojure.core/replace in namespace: user, being replaced by: #'clojure.string/replace
nil
user=> (upper-case "quote")
"QUOTE"
:all を使えば全て import できるが、
既に読み込まれている? 코어 の 리버스 と 교체 を
上書きしてしまうため、やたらと :all は使わない方がいいらしい.
repl の dir 関数で string 関数の中身を全て出す
(require '[clojure.repl :refer :all])
(dir clojure.string)
blank?
capitalize
ends-with?
escape
includes?
index-of
join
last-index-of
lower-case
re-quote-replacement
replace
replace-first
reverse
split
split-lines
starts-with?
trim
trim-newline
triml
trimr
upper-case
repl の dir を使って string の中身の関数を全て並べると
JS 에서 お馴染みの
があった
ちなみに同じく repl 라이브라리노
어프로포스, find-doc, doc
source join)
(defn ^String join
"Returns a string of all elements in coll, as returned by (seq coll),
separated by an optional separator."
{:added "1.2"}
([coll]
(apply str coll))
([separator coll]
(loop [sb (StringBuilder. (str (first coll)))
more (next coll)
sep (str separator)]
(if more
(recur (-> sb (.append sep) (.append (str (first more))))
(next more)
sep)
(str sb)))))
출처 を使えばその関数の実際のソースコードが見れる.
さすが Lisp 族、研究者向けすぎる
まとめ
( require '[clojure.string] )
이 형으로 라이브브라리를 수입해
( clojure.string/upper-case "abCd" )
そのライブラリ名と中の関数名を指定することで
引数の文字列に関数を打つことができる.
string には
' '
は使えず、 " "
のみしか使えない.다불노미.
문자열 になんの関数があったっけ?
と忘れたときは repl/dir で一覧を出力できる.
대문자 ってなんだっけ?
と忘れたときは repl/doc で説明を出力できる.
repl/source を使えば実装のコードすら出力できる.
画期的입니다.
Reference
이 문제에 관하여(Clojure Tutorial Part 4 -- 스트링 라이브브라리를 使ってみる), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/clojure-tutorial-part-4-string-raiburariwoshi-tutemiru-3400텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)