从Clojure中的嵌套结构获取的惯用法

时间:2015-02-05 15:00:54

标签: clojure

其中哪一个是更具惯用性的Clojure?

(def book {:title "Joy of Clojure" 
           :authors ["Michael Fogus" "Chris Houser"]})

(get-in book [:authors 0])
;; => "Michael Fogus"

(-> book :authors first)
;; => "Michael Fogus"

当我有更复杂的数据结构时,这变得更加相关。据推测,两者之间没有技术差异?

1 个答案:

答案 0 :(得分:6)

get-in对于嵌套结构更好,因为许多有趣的键不可调用,特别是向量中的索引(firstsecond除外)或散列映射中的字符串键

user=> (get-in [{:a 0} 1 nil "unknown" {:b {"context info" 42}}] [4 :b "context info"])
42