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