clojure:如何通过索引从向量中获取多个项目

Dan*_* Wu 5 clojure

我使用以下代码通过索引[1 2]提取数据,有没有更短的解决方案?

(vec (map #(nth ["a" "b" "c"] % ) [1 2]))
Run Code Online (Sandbox Code Playgroud)

noi*_*ith 8

mapv 映射到矢量,当作为函数应用时,矢量执行索引查找

(mapv ["a" "b" "c"] [1 2])
Run Code Online (Sandbox Code Playgroud)


Set*_*eth 5

如果你想要一个向量的第一个和第二个索引,有很多方法......

可以使用简单的子向量来保持第一个索引直到第三个索引.

(subvec ["a" "b" "c"] 1 3)
Run Code Online (Sandbox Code Playgroud)

您可以映射矢量并将矢量应用于第一个和第二个索引,以将最后两个索引作为矢量返回.

(mapv ["a" "b" "c"] [1 2])
Run Code Online (Sandbox Code Playgroud)

使用线程最后一个宏,您可以获取3个索引并删除第一个.

(->> ["a" "b" "c"] (take 3) (drop 1))
Run Code Online (Sandbox Code Playgroud)

如果您有一个用n个索引定义的向量,并且您需要的是最后n个索引,则删除基数0以返回最后一个n.

(drop 1 ["a" "b" "c"])
Run Code Online (Sandbox Code Playgroud)