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 /分量相當大量使用)
您可以在Clojure郵件列表上發佈一個更權威性的回答:https://groups.google.com/forum/#!forum/clojure –