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