我正在寻找nth
函数的推广。Julia 中有一个不错的函数,我在 Clojure 中找不到等效函数:
getindex(A, inds...(返回由 inds 指定的数组 A 的子集, 其中每个 ind 可以是 Int、Range 或 Vector。
这与这个问题有关:Clojure 从矢量中指定位置删除项目
map
已经做了你想要的。 (map v indices)
按预期工作,因为可以将向量视为其索引的函数。
这能满足你的需要吗:
(defn get-nths [xs ns]
(for [n ns]
(nth xs n)))
?
向量、范围和仅一个向量的示例:
(defn x []
(vector
(get-nths [:a :b :c :d :e] [2 4])
(get-nths [:a :b :c :d :e] (range 3))
(get-nths [:a :b :c :d :e] [0])))
(x)
;; => [(:c :e) (:a :b :c) (:a)]
对于向量,您也可以使用 select-keys
. 在某些情况下,它可能非常有帮助:
user> (select-keys [:a :b :c :d] [0 1])
{0 :a, 1 :b}