1

次のようなマップのベクトルを持つ試薬原子があるとします。

(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! ??? - ???)
4

1 に答える 1

2

assoc-inベクトル内のマップを含む連想構造のネストで動作します*。swap!そのため、 with をお勧めしますassoc-in

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

*: と同様update-inに、「これが新しい値です」ではなく、古い値の関数を使用する場合。

于 2015-11-22T11:53:33.893 に答える