引用《 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)。符号也一样...