首页 > 解决方案 > 使用 Spectre 从动态索引中选择向量元素

问题描述

我有一个向量[:a :b :c :d :e]和一些索引[1 2 4]

使用 Spectre,如何从索引中选择我的向量的元素,使其返回[:b :c :e]

标签: clojurespecter

解决方案


无需使用 Spectre:

(let [a [:a :b :c :d :e]
      B [1 2 4]]
    (mapv (partial nth a) B))

或者更简单:

(let [a [:a :b :c :d :e]
      B [1 2 4]]
    (mapv a B))

但是如果你坚持使用 Spectre,那么这里是:

(let [a [:a :b :c :d :e]
      B [1 2 4]]
    (select (apply multi-path B) a))

推荐阅读