我想用地图中的值填充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
你是对的,它的工作。谢谢! –