说我有一张地图{:x 1}。
我注意到我可以:x通过将其应用于地图来查找:
(:x {:x 1})
;=> 1
Run Code Online (Sandbox Code Playgroud)
或者通过将映射应用于关键字:
({:x 1} :x)
;=> 1
Run Code Online (Sandbox Code Playgroud)
这两种形式有什么区别?
映射和关键字都实现IFn并因此可以用作函数。他们实现的功能是get. 所以它基本上总是转化为(get map key default).
因此,您可以自行制定一些经验法则;需要考虑的一些事项:
({"a" 1} "a"))(nil {:a 1})失败,但({:a 1} nil)有效) ; 如果您对两者都不确定:使用get