完全忽略原子,以下是对键值(Keyword)的非正式看法
我喜欢把键值看作是一个具有特殊功能的字符串/符号混合体。像符号一样,它们被限制在某些字符(特别是没有空格)中,并且可以命名空间::myproject.api/foo
。像字符串一样,它们实际上是数据原语。
键值的主要超级功能是它们可以作为函数调用以从关联数据结构(如哈希表)中获取值:(:foo {:foo 42 "bar" 36})
=> 42
和集合:(:foo #{:foo :bar})
=> :foo
。不能使用字符串或数字作为函数。
以下是一个有关于为什么关键字存在于Clojure中的有用的StackOverflow答案:https://stackoverflow.com/a/11655615