在Clojure中通过一系列参数向量映射函数

too*_*ays 1 clojure map

有没有办法在参数的矢量(或列表)列表中映射3个参数的函数foo,以便向量解构?

(defn foo [a b c]
 ...)

([a1 b1 c1] [a2 b2 c2])
Run Code Online (Sandbox Code Playgroud)

有一个简单的功能,我可以用它来做到这一点?或者我必须构建一个匿名函数?

nic*_*ley 5

你想要apply函数.

(map #(apply foo %) '([1 2 3] [4 5 6]))
Run Code Online (Sandbox Code Playgroud)

编辑:

既然你提到不使用匿名函数,我会注意到你可以用一些简单的函数组合轻松地创建foo函数的'mappable'版本.

(def mfoo (partial apply foo))
(map mfoo '([1 2 3] [4 5 6]))
Run Code Online (Sandbox Code Playgroud)