私はClojureを学んでいます。それでも私は言語と哲学のための良い理解 を持っていません。Clojureのドット演算子と完全修飾呼出しの違い
しかし、私はこの言語にもっと慣れたいと思っています。したがって、 私は ClojureコアAPIドキュメントを読み始め、clojure.core/get
ソースコードに興味深いものが見つかりました。
(defn get
"Returns the value mapped to key, not-found or nil if key not present."
{:inline (fn [m k & nf] `(. clojure.lang.RT (get ~m ~k [email protected])))
:inline-arities #{2 3}
:added "1.0"}
([map key]
(. clojure.lang.RT (get map key)))
([map key not-found]
(. clojure.lang.RT (get map key not-found))))
特定のキーで値を取得するには、clojurelang.RT/get
関数を使用します。 コードはdotオペレータ - (. clojure.lang.RT (get map key))
を呼び出します。
私の質問は、 (clojure.lang.RT/get map key)
の代わりに(. clojure.lang.RT (get map key))
と書きました。
技術的に違いはありますか?または任意の利益?
定義前に 'classname/method'構文を定義しましたか?私の推測では、 'clojure.lang.RT/get'はコンパイル時にこの時点で文法エラーになります。 – ToBeReplaced
'' clojure.core''コードは、最低レベルのフォームを使用する傾向があるため、おそらく言語哲学を理解するのには良い場所ではありません。きれいなHTTP抽象化(https://github.com/mmcgrana/ring/)のためのリングや、ルーティングDSL(https://github.com/weavejester/compojure)のためのコンパイルのように、よく確立されたライブラリを見る方が良いでしょう。 – sw1nn