::用于clojure的是什么?

我理解Clojure中的关键字是:keyword。 但是::用于什么? 为什么它看起来像一个绑定?

user=> :foo :foo user=> ::foo :user/foo 

双冒号在那里用你当前的命名空间完全限定关键字 。 这是为了避免名称冲突的关键字对于不同的图书馆是有意义的。 如果没有完全限定的关键字,您可能会无意中覆盖地图中的某些值并破坏与库的兼容性。

这是没有logging的 ,但::关键字也可以用来parsing命名空间别名。 例如,如果fooclojure.core的别名,则::foo/bar将评估为:clojure.core/bar 。 如果foo未parsing为名称空间,则会引发读者exception。

编辑:这是现在logging