我有这张地图
(def m {:a "aaa" :b {:c ["ss" "gg"]}})
我想将其更新为此(将#34; uu"添加到向量:c):
{:a "aaa" :b {:c ["ss" "gg" "uu"]}}
这就是我想出来的,我讨厌它:
(assoc-in m [:b :c] (conj (get-in m [:b :c]) "uu"))
应该如何我在做什么?
答案 0 :(得分:6)
(update-in m [:b :c] conj "uu")
我想到的方式是update-in
让你到那里并调用一个函数,该函数不仅接收那里的状态,而且还接收剩余参数。因此,conj
将使用["ss" "gg"]
和"uu"
进行调用,数据结构中密钥:c
的值将变为["ss" "gg" "uu"]
。
assoc-in
没有获得任何初始状态,因此在您的示例中,您必须努力再次创建那里的内容。