以下代码

(let [coll [1 2 3 4 5]
      filters [#(> % 1) #(< % 5)]]
  (->> coll
       (filter (first filters))
       (filter (second filters))))

给我
(2 3 4)

哪个很棒,但是如何在coll中应用所有过滤器而不必显式命名呢?

可能存在完全更好的方法,但是理想情况下,我想知道一个可以替换(过滤器(第一个过滤器))(过滤器(第二个过滤器))的表达式。

谢谢!

最佳答案

Clojure 1.3具有一个新的 every-pred 函数,您可以这样使用它:

(filter (apply every-pred filters) coll)

关于clojure - 在Clojure的鹅口疮中将多个过滤器应用于集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6927983/

10-16 03:22