Clojure:向向量添加元素在地图上

时间:2016-02-19 07:29:48

标签: dictionary vector clojure

我有这张地图

(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"))

应该如何我在做什么?

1 个答案:

答案 0 :(得分:6)

(update-in m [:b :c] conj "uu")

我想到的方式是update-in 让你到那里并调用一个函数,该函数不仅接收那里的状态,而且还接收剩余参数。因此,conj将使用["ss" "gg"]"uu"进行调用,数据结构中密钥:c的值将变为["ss" "gg" "uu"]

assoc-in没有获得任何初始状态,因此在您的示例中,您必须努力再次创建那里的内容。