2024年Clojure调查中分享您的想法!

欢迎!请参阅关于页面以了解有关此工作方式的一些更多信息。

0
Clojure

我之前了解到keywords,但我不确定除了用作maps中的key外,它们实际上还有什么用处。keywords除了在maps中使用外,还有其他用途吗?

它们实际意味着什么和能做什么呢?

2 个回答

+3

Keywords和symbols都适用于命名事物。Symbols会求值出它们所引用的实体,所以通常用于函数。Keywords会求值出它们自身,因此它们是良好的属性名或枚举值的名字。

与symbols作为名字相比,keywords的一些其他好处在于它们是interned的(在运行时中,特定关键词只有一个实例会被重用,因此拥有相同属性的1000个maps仅使用一个关键词占用内存),并且它们还具有快速的(身份)相等性实现。

+1
by

它们是用于表示名称的数据类型,假设我给你这个JSON

{
  "a" : "b",
  "c": {
    "d": "e"
  }
}

无法区分什么是名称,什么是值

关键字可让你标明标签

关键字也可用作查找函数,如下

(-> data :person :address :house-number) ;; 5
...