たとえば、ベクトル[1, 2, 3]
があり、ベクトルがになるように2番目の要素を更新したいとし[1, 5, 3]
ます。他の言語では、私はのようなarray[1] = 5
ことをするでしょうが、Clojureでこれを簡単に行うことができるものは何も知りません。
これを実現する方法、または別のデータ構造を使用する必要があるかどうかについての考えはありますか?
assoc
そのためにうまく機能します。新しい値を配置し、新しく作成されたベクトルを返すインデックスを取得します。
Clojure> (assoc [1 2 3] 1 5)
[1 5 3]
Yveの答えは、元のベクトルを更新する方法を示していません。
これは可能ですが、Clojureの初心者として、それが最善の方法かどうかはわかりません。
main=> (def ar [1 2 3])
#'main/ar
main=> ar
[1 2 3]
main=> (def ar (assoc ar 1 5))
#'main/ar
main=> ar
[1 5 3]