如果我有一个向量:如何更新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)
如果我有一个向量:如何更新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
作品与载体呢!
Usage: (assoc map key val) (assoc map key val & kvs)
ASSOC [莱特]。应用于地图时, 会返回一个与 (散列/排序)类型相同的新地图,其中包含密钥到val的映射关系( )。 当 应用于向量时,返回包含索引处的val的新的 向量。 注 - 索引必须是< =(计数 矢量)。
(assoc [1 2 3] 1 :a)
=> [1 :a 3]
并且还'更新in':'(更新-v中[4] - 5)'。这当然是一个愚蠢的例子,如果你只是想把五重置为零。但是,如果零是基于五的计算结果,它可以派上用场。移动坐标等。 – kotarak 2011-05-30 06:38:15
另一个注意事项:你也可以用'assoc'附加到一个向量。 '(assoc [:a:b] 2:c)'给出'[:a:b:c]'。 – kotarak 2011-05-30 06:40:08