我正在研究一个函数,它需要一个向量(可能是嵌套向量)作为输入以及一些数量 y 和索引 n。本质上,该函数将在向量中的第 n 个元素之后附加 y 并与其余元素相邻。到目前为止,我写了以下内容,但没有按计划工作:
(defn funcs [x y n]
(concat (take (- n 1) x) (concat (take-last (- (count x) n) y))))
我正在研究一个函数,它需要一个向量(可能是嵌套向量)作为输入以及一些数量 y 和索引 n。本质上,该函数将在向量中的第 n 个元素之后附加 y 并与其余元素相邻。到目前为止,我写了以下内容,但没有按计划工作:
(defn funcs [x y n]
(concat (take (- n 1) x) (concat (take-last (- (count x) n) y))))
如果要返回向量作为最终值,则必须使用into
(在时间上与右操作数的大小呈线性关系)或core.rrb-vector
's catvec
(对数时间,但生成的向量总体上会慢一些)连接向量.
至于实际实现,假设你想使用 core.rrb-vector:
(require '[clojure.core.rrb-vector :as fv])
(defn append-after-nth [x y n]
(fv/catvec (fv/subvec x 0 n) y (fv/subvec x n)))