以下代码
(let [coll [1 2 3 4 5]
      filters [#(> % 1) #(< % 5)]]
  (->> coll
       (filter (first filters))
       (filter (second filters))))
给我
(2 3 4)
哪个好,但是如何在coll中应用所有过滤器而不必明确命名它们?
可能有更好的方法来做到这一点,但理想情况下我想知道上面可以替换(过滤器(第一个过滤器))(过滤器(第二个过滤器))的表达式.
谢谢!
Jus*_*mer 18
Clojure 1.3有一个新every-pred功能,你可以这样使用:
(filter (apply every-pred filters) coll)
小智 13
这应该工作: -
(let [coll [1 2 3 4 5]
      filters [#(> % 1) #(< % 5)]]
  (filter (fn [x] (every? #(% x) filters)) coll)
)