gpt4 book ai didi

Clojure:::标签的含义

转载 作者:行者123 更新时间:2023-12-04 04:41:36 27 4
gpt4 key购买 nike

最近我遇到了像 {::tag 10} 这样的建筑。在 Clojure 中。这是什么意思?我的实验表明它是一个关键字:

=> (type :tag)
clojure.lang.Keyword
=> (type ::tag)
clojure.lang.Keyword

区别在于值(value)本身:
=> :tag
:tag
=> ::tag
:/user/tag

好像是 ::tag是命名空间限定的。猜对了吗?如果是,命名空间限定关键字和非限定关键字有什么区别?什么时候有用?

最佳答案

双冒号是命名空间限定关键字的简写语法,带有当前命名空间。它非常适合防止与哈希映射中基于外部关键字的键发生冲突,例如在函数元数据中具有 :name 和::name 键或比较参数的 :name 与::name 值。

就像您将命名公共(public)函数以识别它并防止名称冲突一样,当将自定义关键字公开为键或值时,可能与现有关键字发生冲突,您应该考虑命名空间限定它。

关于Clojure:::标签的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797087/

27 4 0