例如,我有一个向量[1, 2, 3]
,我想更新第二个元素,以便向量变为[1, 5, 3]
。在其他语言中,我会做类似array[1] = 5
的事情,但我不知道任何可以让我在Clojure中轻松完成的事情。
关于如何实现这一点的想法,或者我是否应该使用不同的数据结构?
答案 0 :(得分:70)
assoc
可以正常使用。它将索引放在哪里放置新值并返回新创建的向量:
Clojure> (assoc [1 2 3] 1 5)
[1 5 3]
答案 1 :(得分:-6)
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]