2017-05-16 88 views
1

這似乎傳遞一個記錄作爲第一個參數merge總是返回相同類型的 記錄:Clojure的合併記錄類型

(defrecord X [a b c]) 
(merge (X. 1 2 3) {:d 4 :e 5})  ;; #my_ns.X{:a 1, :b 2, :c 3, :d 4, :e 5} 
(merge {:z 0} (X. 1 2 3) {:d 4 :e 5}) ;; {:z 0, :a 1, :b 2, :c 3, :d 4, :e 5} 

望着merge實施,似乎依靠conj

(conj (X. 1 2 3) [:z 0]) ;; #my_ns.X{:a 1, :b 2, :c 3, :z 0} 

assoc作品,以及:

(assoc (X. 1 2 3) :z 0) ;; #my_ns.X{:a 1, :b 2, :c 3, :z 0} 

它,它的行爲我可以依靠:在conj的情況下

  • merge的情況下?
  • assoc的情況下? (我認爲是的,因爲這似乎 StuartSierra /分量相當大量使用)
+1

您可以在Clojure郵件列表上發佈一個更權威性的回答:https://groups.google.com/forum/#!forum/clojure –

回答