2014-01-13 54 views
0

我正在研究一個函數,它將一個向量(可能是嵌套向量)作爲輸入以及一些數量y和索引n。本質上,函數會在矢量中的第n個元素之後附加y,並與其餘元素相鄰。到目前爲止,我有以下記着,按計劃沒有不工作:在第n個索引處追加一個元素

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

回答

3

如果你想返回一個向量作爲最終值,你就必須使用串聯的into向量(在時間線在右操作數的大小)或core.rrb-vectorcatvec(對數時間,但結果向量將整體稍慢)。

至於實際的執行,假設你想要去core.rrb載體:

(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))) 
+0

那麼多比我天真的會更好! –

+0

依賴''[org.clojure/core.rrb-vector「$ {version}」]'給我帶來麻煩。它說索引59處有一個非法字符。這是我第一次遇到這樣的問題。 – sunspots

+1

您需要提供您想要替代「$ {version}」的實際版本,例如「0.0.10」。 –