我想用地圖中的值填充Clojure矢量。 我有地圖中的特定鍵的另一個向量存儲我需要的值。 我需要迭代key-vec,從地圖獲取值並將它們存儲在另一個向量中。填寫Clojure矢量
我的使用環路+ RECUR嘗試:
(let [keys-vec (:keys-vec item)
my-map (:my-map item)]
(loop [newV []
i 0]
(if (< i (count keys-vec))
(recur
(conj newV (get my-map (get keys-vec i)))
(inc i))
newV)))
和它的工作。 但我知道Clojure以其簡約/高效的代碼書寫風格而聞名,我想知道是否有更好的方法。
任何想法?
你能指定你試圖實現什麼嗎? '(def new-vector existing-vector)'不是解決問題嗎? – superkonduktr
我相信它接近於Clojure中的一種反模式,它使用循環和元素索引遍歷一個向量,因爲Clojure的集合是不可變的,持久的。相反,鼓勵您使用減少功能。完成任務的慣用方式只是'(vals(select-keys my-map keys-vec))''。 – superkonduktr
你是對的,它的工作。謝謝! –