我对以前的其他Lisp(特别是Scheme)有一个短暂的了解。最近我一直在读关于Clojure的文章。我看到它有“符号”和“关键字”。我熟悉的符号,但不是关键字。
其他Lisp有关键词吗?除了有不同的符号(例如:冒号),关键字与符号有什么不同?
发布于 2009-10-06 19:25:38
关键字是自我评估的符号,所以你不必记得引用它们。
发布于 2009-10-06 21:35:48
:关键字也被许多集合特别处理,允许使用一些非常方便的语法。
(:user-id (get-users-map))
等同于
((get-users-map) :user-id)
这使得事情变得更加灵活。
发布于 2015-07-20 00:22:14
对于关键字,在第一次构造关键字时计算并缓存散列值。当查找关键字作为散列键时,它只返回预先计算的散列值。对于字符串和符号,每次查找时都会重新计算哈希。
为什么相同的命名关键字总是相同的,它们包含自己的散列值。由于地图和集合中的搜索是由散列键进行的,因此在大量搜索的情况下,这会带来更好的搜索效率,而不是在搜索本身中。
https://stackoverflow.com/questions/1527548
复制相似问题