Clojureのキーワードを理解してい:keyword
ます。しかし、何のために::
使用されますか?なぜバインディングがあるように見えるのですか?
user=> :foo
:foo
user=> ::foo
:user/foo
回答:
二重コロンは、キーワードを現在の名前空間で完全に修飾するためにあります。これは、さまざまなライブラリにとって意味のあるキーワードの名前の衝突を回避することを目的としています。完全修飾キーワードがないと、マップ内の一部の値を誤って上書きし、ライブラリとの互換性を損なう可能性があります。
ClojureおよびClojureScriptについて現在文書化されているように、::
キーワードを使用して名前空間エイリアスを解決することもできます。たとえば、はのエイリアスであるかどうか::foo/bar
を評価します。名前空間に解決されない場合、リーダー例外がスローされます。:clojure.core/bar
foo
clojure.core
foo