如何使用带有多个参数的函数的map

Ves*_*kov 3 clojure

我有以下方法:

(defn area [x y] (* x y))
Run Code Online (Sandbox Code Playgroud)

如何根据参数编号迭代列表.就像是

(map area [2 5 6 6])
Run Code Online (Sandbox Code Playgroud)

所以它会使计算像(area 2 5)(area 6 6),也许载体是不是正确的类型使用.

set*_*hev 6

您可以partition像在此处建议的那样使用,但您可能需要考虑以不同方式排列数据.例如,您可以使用向量向量:

[[2 5] [6 6]]
Run Code Online (Sandbox Code Playgroud)

然后你可以将你的area功能改为:

(defn area [[x y]] (* x y))
Run Code Online (Sandbox Code Playgroud)

现在你可以用你的一对来调用它:(area [6 6])并且映射你的向量很容易:

(map area [[2 5] [6 6]])
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你需要area采用两个参数而不是矢量,你可以这样做:

(map #(apply area %) [[2 5] [6 6]])
Run Code Online (Sandbox Code Playgroud)

对我来说,这仍然比使用更简单partition.