【发布时间】:2017-05-17 00:38:35
【问题描述】:
似乎将记录作为第一个参数传递给merge 总是返回一个
同类记录:
(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 邮件列表中发布此问题,您或许可以获得更权威的答案:groups.google.com/forum/#!forum/clojure
标签: clojure