Clojure 在第n个索引处追加元素

Clojure 在第n个索引处追加元素,clojure,clojure-contrib,Clojure,Clojure Contrib,我正在研究一个函数,它接受一个向量(可能是嵌套向量)以及一些数量y和索引n作为输入。本质上,函数将在向量中的第n个元素后附加y,并与其余元素相邻。到目前为止,我写了以下内容,但没有按计划进行: (defn funcs [x y n] (concat (take (- n 1) x) (concat (take-last (- (count x) n) y)))) 如果要返回一个向量作为最终值,则必须使用将向量连接到(在时间上与右操作数的大小成线性关系)或catvec(对数时间,但生成的向量总体

我正在研究一个函数,它接受一个向量(可能是嵌套向量)以及一些数量y和索引n作为输入。本质上,函数将在向量中的第n个元素后附加y,并与其余元素相邻。到目前为止,我写了以下内容,但没有按计划进行:

(defn funcs [x y n]
(concat (take (- n 1) x) (concat (take-last (- (count x) n) y))))

如果要返回一个向量作为最终值,则必须使用
将向量连接到
(在时间上与右操作数的大小成线性关系)或
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)))

如果要返回一个向量作为最终值,则必须使用
将向量连接到
(在时间上与右操作数的大小成线性关系)或
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)))

如果要返回一个向量作为最终值,则必须使用
将向量连接到
(在时间上与右操作数的大小成线性关系)或
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)))

如果要返回一个向量作为最终值,则必须使用
将向量连接到
(在时间上与右操作数的大小成线性关系)或
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)))

比我天真的解决方案好多了!依赖关系
[org.clojure/core.rrb-vector“${version}]”
给我带来了麻烦。它说在索引59的路径中有一个非法字符。这是我第一次在lein deps中遇到这样的问题。你需要提供你想要的实际版本来代替“${version}”,例如“0.0.10”。这比我天真的解决方案要好得多!依赖关系
[org.clojure/core.rrb-vector“${version}]”
给我带来了麻烦。它说在索引59的路径中有一个非法字符。这是我第一次在lein deps中遇到这样的问题。你需要提供你想要的实际版本来代替“${version}”,例如“0.0.10”。这比我天真的解决方案要好得多!依赖关系
[org.clojure/core.rrb-vector“${version}]”
给我带来了麻烦。它说在索引59的路径中有一个非法字符。这是我第一次在lein deps中遇到这样的问题。你需要提供你想要的实际版本来代替“${version}”,例如“0.0.10”。这比我天真的解决方案要好得多!依赖关系
[org.clojure/core.rrb-vector“${version}]”
给我带来了麻烦。它说在索引59的路径中有一个非法字符。这是我第一次在lein deps中遇到这样的问题。您需要提供您想要的实际版本来代替“${version}”,例如“0.0.10”。