是否可以在Clojure中为匿名函数执行var args?
例如,我该怎么转:
(#(reduce + (map * %1 %2 %3)) [1 2 3] [4 5 6] [7 8 9])
成像,
(#(reduce + (map * [& args])) [1 2 3] [4 5 6] [7 8 9])
答案 0 :(得分:10)
这解决了这个问题:
user> ((fn[& args] (reduce + (apply map * args))) [1 2 3] [4 5 6] [7 8 9])
270
或
user> (#(reduce + (apply map * %&)) [1 2 3] [4 5 6] [7 8 9])
270
答案 1 :(得分:2)
使用apply
功能
<击>
我不知道使用#(...)
语法执行此操作的方法,但这是使用fn
((fn [& args] (reduce + (apply map * args))) [1 2 3] [4 5 6] [7 8 9])
击> <击> 撞击>
您可以使用%&
以#(...)
形式获取其余参数,从而产生
(#(reduce + (apply map * %&)) [1 2 3] [4 5 6] [7 8 9])