53

たとえば、ベクトル[1, 2, 3]があり、ベクトルがになるように2番目の要素を更新したいとし[1, 5, 3]ます。他の言語では、私はのようなarray[1] = 5ことをするでしょうが、Clojureでこれを簡単に行うことができるものは何も知りません。

これを実現する方法、または別のデータ構造を使用する必要があるかどうかについての考えはありますか?

4

2 に答える 2

92

assocそのためにうまく機能します。新しい値を配置し、新しく作成されたベクトルを返すインデックスを取得します。

Clojure> (assoc [1 2 3] 1 5)
[1 5 3]
于 2012-09-27T19:10:12.457 に答える
-8

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]
于 2014-08-08T16:55:13.080 に答える