2015-11-22 70 views
1

載體的試劑原子比方說,我有這樣的地圖的載體的試劑原子:如何更新地圖Clojure中

(def my-atom (reagent/atom [{:id 1 :name "first name"} 
          {:id 2 :name "second name"}])) 

我怎樣才能在一定的更新鍵的值矢量指數是這樣的:

[{:id 1 :name "first name"} 
{:id 2 :name "UPDATED second name"}] 

我正在尋找一個功能類似(update-my-atom 1 :name "UPDATED second name")

(defn update-my-atom 
    [vector-index key new-value] 
    (swap! ??? - ???) 

回答

2

assoc-in適用於任何關聯結構的嵌套,包括向量*內的映射。因此,我建議一個swap!assoc-in

(swap! my-atom assoc-in [vector-index key] new-value) 

*:一樣update-in,如果你想使用舊的價值,而不是一個函數「這是新的價值。」