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 を使えば実装のコードすら出力できる.

    画期的입니다.

    좋은 웹페이지 즐겨찾기