我无法找到以下问题的解决方案:
假设我有一张地图:
(def defaults {
:name "John"
:surname "Doe"
:info {:date-of-birth "01-01-1980"
:registered [{:type "newsletter" :name "breaking news" }]}
})
然后我传递了一个类似的结构化映射,但我想合并向量并覆盖其余的键:
(def new {
:name "Peter"
:info {:date-of-birth "11-01-1986"
:registered [{:type "alert" :name "mobile-alert" }]}
})
我想要这个结果:
{:name "Peter"
:surname "Doe"
:info {:date-of-birth "11-01-1986"
:registered [{:type "newsletter" :name "breaking news" }
{:type "alert" :name "mobile-alert" }]}}
现在我可以使用静态语法轻松做到这一点,例如:
(reduce conj (get-in defaults [:info :registered]) (get-in new [:info :registered]))
(可能有更好的方法......)但我希望更多具有以下属性的动态函数:
- 在不知道结构的情况下保留两个映射中的所有键
- 使用正确映射中的值更新任何键
- 如果一个key的val是一个向量,那么
conj
这个向量和右边的map的向量(如果合适的key当然存在的话)
我在这里先向您的帮助表示感谢 :)