替换Clojure中嵌套映射中的多个值

问题描述

我只是花了几个小时试图弄清楚这一点,甚至搜索了以前的问题,但是解决方案似乎并不适用,所以我决定创建一个新的问题。

我有一个现有地图,其中某些键和值要替换为另一张地图中的值。

(def m '{a {:*x 0 :*velx 1,:*vely 1}})
(def m' '{a {:*velx 9,:*vely 9}})

(assoc (m 'a) (m' 'a))
;; => {a {:*x 0 :*velx 9,:*vely 9}}

由于assoc需要吸收地图的内容,因此这似乎行不通,而且我也不知道如何从中“消除卷曲的碎片” ...

编辑:这与建议的现有线程不同,因为它不是地图列表,而是两个单独的地图,因此建议的解决方案在我的情况下不起作用。

解决方法

我终于找到了它!

(merge-with into m m')
=> {a {:*x 0,:*velx 9,:*vely 9}}