因此,我尝试以这种方式转换向量 x 的每个元素:x[i]--> 1-(1/x[i])
(defn change[x]
(fn [i]
(assoc x i (- 1 (/ 1 (get x i))))
)
(range 0 (* (count x) 1))
)
我正在使用 assoc 来替换向量的每个元素,我应该得到一个包含更改的向量,但我得到的是一个列表。
例如 用户>(更改 [21 32 23 34])
(0 1 2 3)
但我应该得到一个矢量 :v
最佳答案
您提供的函数代码没有使用本地匿名函数,可以大大重构。
这是带有注释的原始函数。
(defn change[x]
;; start unused anonymous
(fn [i]
(assoc x i (- 1 (/ 1 (get x i)))))
;; end unused anonymous
;; start/end gen list of ints
(range 0 (* (count x) 1)))
这可能是你的意思
(defn change [coll]
(mapv #(- 1 (/ 1 %)) coll))
这是输出
user> (change [21 32 23 34])
;=> [20/21 31/32 22/23 33/34]
关于vector - 为什么我得到的是列表而不是向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27141447/