Clojure 更新嵌套贴图中的向量

Clojure 更新嵌套贴图中的向量,clojure,Clojure,我目前正在对嵌套映射中包含的向量进行操作: (def map {:key1 {:key2 [1 2 3]}}) 现在,我正在寻找最可行的方法来更新该向量中的单个值。 我能够通过提取向量执行独立更新: (assoc (get-in map [:key1 :key2]) 2 '(3 4 5)) (assoc-in map [:key1 :key2 2] '(3 4 5)) ; => {:key1 {:key2 [1 2 (3 4 5)]}} 但是,我没有成功地在地图内部进行更新。 如果某

我目前正在对嵌套映射中包含的向量进行操作:

(def map {:key1 {:key2 [1 2 3]}})
现在,我正在寻找最可行的方法来更新该向量中的单个值。 我能够通过提取向量执行独立更新:

(assoc (get-in map [:key1 :key2]) 2 '(3 4 5))
(assoc-in map [:key1 :key2 2] '(3 4 5))
; => {:key1 {:key2 [1 2 (3 4 5)]}}
但是,我没有成功地在地图内部进行更新。
如果某个函数适用,则“更新中”将起作用。但是,我仍然需要通过函数发送完整的向量,而不是更新单个值。

您可以使用向量中的索引在中调用
assoc:

(assoc (get-in map [:key1 :key2]) 2 '(3 4 5))
(assoc-in map [:key1 :key2 2] '(3 4 5))
; => {:key1 {:key2 [1 2 (3 4 5)]}}

是的,我还尝试使用匿名函数与
中的更新一起使用,但
中的assoc正是我想要的!