如果我在线程宏中使用匿名函数之前定义了它:
(def even #(map even? %))
(-> [1 2 3] even)
我得到正确的结果:
(false true false)
但是,如果我评估以下代码:
(-> [1 2 3] #(map even? %))
我收到以下错误:
clojure.lang.Compiler$CompilerException: java.lang.IllegalArgumentException: fn params must be Symbols
为什么不能在线程宏中使用匿名函数?
线程宏将先前的形式作为下一个形式的第二个元素插入。
(-> [1 2 3]
#(map even? %))
变成
(fn* [1 2 3] [arg] (map even? arg))
您想要:
(->> [1 2 3]
(map even?))
或者
(-> [1 2 3]
(#(map even? %)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句