::用于clojure的是什么?
我理解Clojure中的关键字是:keyword。 但是::用于什么? 为什么它看起来像一个绑定?
user=> :foo :foo user=> ::foo :user/foo
双冒号在那里用你当前的命名空间完全限定关键字 。 这是为了避免名称冲突的关键字对于不同的图书馆是有意义的。 如果没有完全限定的关键字,您可能会无意中覆盖地图中的某些值并破坏与库的兼容性。
这是没有logging的 ,但::
关键字也可以用来parsing命名空间别名。 例如,如果foo
是clojure.core
的别名,则::foo/bar
将评估为:clojure.core/bar
。 如果foo
未parsing为名称空间,则会引发读者exception。
编辑:这是现在logging