53

例如,我有一个向量[1, 2, 3],我想更新第二个元素,使向量变为[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 回答