Noob clojure误解:( - >%:foo:bar)vs(:bar:foo)

时间:2014-07-02 13:23:39

标签: clojure

我正在浏览一些oo clojure代码,以便更好地理解它的错综复杂。

很多时候,当有哈希地图并且有人想拿钥匙时,他们会写

(-> % :hash :key),我认为他们可以写(:key :hash)

我想我的问题是,(-> % :hash :key)在做什么?

1 个答案:

答案 0 :(得分:4)

->Thread-first macro

如果您有像(def mymap {:foo {:bar "s_bar"}})这样的哈希映射,则宏将转换

(-> mymap :foo :bar)

进入

(:bar (:foo mymap))

,结果为"s_bar"

此处宏用于访问嵌套哈希图的值,它类似于(get-in mymap [:foo :bar])