引用《 Clojure的欢乐》第4.3.1节-


(def population {:zombies 2700, :humans 9})
(:zombies population)
;=> 2700
(println (/ (:zombies population)
(:humans population))
"zombies per capita")
; 300 zombies per capita

对我来说,这并不明显。某种程度上(:zombies population)必须转换为(get population :zombies),对吗?这是如何工作的?关键字求值本身,而不是函数。读者是否会寻找列表中第一件事是关键字的情况,并添加get并将关键字移动到列表末尾?

最佳答案

来自official documentation的引用:



Clojure可以将关键字作为函数调用,因为它实现了与函数相同的接口(interface)。符号也一样...

08-26 08:35