5
我有一个结构类似的嵌套HashMap中的以下内容:如何在嵌套的散列表中合并?
(def pathmap {:order {:genus {:species {:cat2 "data", :cat1 "data"}}}})
我需要的是像一个函数assoc命令式,让我到新的键值对添加到内部嵌套地图,而不是简单地取代已有的东西。例如:
(my-assoc-merge pathmap [:order :genus :species] {:cat3 "data"})
;=> {:order {:genus {:species {:cat3 "data" :cat2 "data", :cat1 "data"}}}}
我想我也许可以通过改变assoc命令,在功能上略有使用合并,与和工会要做到这一点很容易不够:
(defn my-assoc-merge
[m [k & ks] v]
(if ks
(assoc m k (my-assoc-merge (get m k) ks v))
(assoc m k (merge-with clojure.set/union (get m k '{}) v))))
很不幸,这给我的错误“CompilerException java.lang.UnsupportedOperationException:此类型不支持count:关键字,编译:(core.clj:34:12)”。我哪里错了?
辉煌灿烂的语言功能。 – leontalbot
'update-in'完全符合我的要求。也感谢修正。 – patabongo