首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Clojure除了"symbols“之外还有”关键字“?

为什么Clojure除了"symbols“之外还有”关键字“?
EN

Stack Overflow用户
提问于 2009-10-06 19:20:36
回答 3查看 25.7K关注 0票数 134

我对以前的其他Lisp(特别是Scheme)有一个短暂的了解。最近我一直在读关于Clojure的文章。我看到它有“符号”和“关键字”。我熟悉的符号,但不是关键字。

其他Lisp有关键词吗?除了有不同的符号(例如:冒号),关键字与符号有什么不同?

EN

回答 3

Stack Overflow用户

发布于 2009-10-06 19:25:38

关键字是自我评估的符号,所以你不必记得引用它们。

票数 6
EN

Stack Overflow用户

发布于 2009-10-06 21:35:48

:关键字也被许多集合特别处理,允许使用一些非常方便的语法。

代码语言:javascript
复制
(:user-id (get-users-map))

等同于

代码语言:javascript
复制
((get-users-map) :user-id)

这使得事情变得更加灵活。

票数 5
EN

Stack Overflow用户

发布于 2015-07-20 00:22:14

对于关键字,在第一次构造关键字时计算并缓存散列值。当查找关键字作为散列键时,它只返回预先计算的散列值。对于字符串和符号,每次查找时都会重新计算哈希。

为什么相同的命名关键字总是相同的,它们包含自己的散列值。由于地图和集合中的搜索是由散列键进行的,因此在大量搜索的情况下,这会带来更好的搜索效率,而不是在搜索本身中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1527548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档