如何在Clojure中更新向量中的项?

如何在Clojure中更新向量中的项?,clojure,Clojure,如果我有一个向量: [1 2 3 4 5 6 7 8 9] :我想用0替换5,以给出: [1 2 3 4 0 6 7 8 9] 当我只知道索引是4时,我怎么做呢 比如: (replace-in-vec [1 2 3 4 5 6 7 8 9] 4 0) 您想要assoc:assoc也可以使用向量 协会。应用于地图时, 返回相同属性的新映射 (哈希/排序)类型,其中包含 键到val的映射什么时候 应用于向量,返回新的 索引处包含val的向量。 注意-索引必须是并且也必须在中更新:(在v[4]

如果我有一个向量:

[1 2 3 4 5 6 7 8 9]
:我想用0替换5,以给出:

[1 2 3 4 0 6 7 8 9]
当我只知道索引是4时,我怎么做呢

比如:

 (replace-in-vec [1 2 3 4 5 6 7 8 9] 4 0)

您想要
assoc

assoc
也可以使用向量

协会。应用于地图时, 返回相同属性的新映射 (哈希/排序)类型,其中包含 键到val的映射什么时候 应用于向量,返回新的 索引处包含val的向量。
注意-索引必须是并且也必须在中更新:
(在v[4]-5中更新)
。如果你只想将5重置为零,这当然是一个愚蠢的例子。但是,如果零是基于五的计算结果,例如移动坐标等,它可以非常方便。另一个注意:您也可以使用
assoc
附加到向量<代码>(assoc[:a:b]2:c)给出了
[:a:b:c]
 Usage: (assoc map key val)
        (assoc map key val & kvs)
(assoc [1 2 3] 1 :a)
 => [1 :a 3]