3

我有以下方法:

(defn area [x y] (* x y))

如何遍历关于参数编号的列表。就像是

(map area [2 5 6 6])

所以它会进行类似(area 2 5)and的计算(area 6 6),也许 vector 不是正确使用的类型。

4

3 回答 3

6

您可以partition按照这里的一些建议使用,但您可能需要考虑以不同的方式排列数据。例如,您可以使用向量的向量:

[[2 5] [6 6]]

然后你可以改变你的area功能:

(defn area [[x y]] (* x y))

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

(map area [[2 5] [6 6]])

如果由于某种原因您需要area使用两个参数而不是向量,您可以执行以下操作:

(map #(apply area %) [[2 5] [6 6]])

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

于 2013-03-06T16:30:00.737 回答
4

试试这个:

(map #(apply area %) (partition 2 [2 5 6 6]))
于 2013-03-06T16:07:19.363 回答
1

map函数期望的每个参数都需要一个单独的序列参数:

(map [2 6] [5 6])
于 2013-03-06T16:06:41.753 回答