Ответ 1
assoc
отлично работает. Он принимает индекс, где нужно поместить новое значение и вернуть вновь созданный вектор:
Clojure> (assoc [1 2 3] 1 5)
[1 5 3]
Например, у меня есть вектор [1, 2, 3]
, и я хочу обновить второй элемент, чтобы вектор стал [1, 5, 3]
. На других языках я бы просто сделал что-то вроде array[1] = 5
, но я не знаю ничего, что позволило бы мне сделать это легко в Clojure.
Мысли о том, как это сделать, или о том, следует ли использовать другую структуру данных?
assoc
отлично работает. Он принимает индекс, где нужно поместить новое значение и вернуть вновь созданный вектор:
Clojure> (assoc [1 2 3] 1 5)
[1 5 3]
Ив ответ не показывает, как обновить исходный вектор.
Это делает, но как Clojure noob, я не уверен, что это лучший способ:
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]