我有以下方法:
(defn area [x y] (* x y))
如何根据参数编号迭代列表。像
这样的东西(map area [2 5 6 6])
所以它会进行(area 2 5)
和(area 6 6)
之类的计算,也许vector不是正确使用的类型。
答案 0 :(得分: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
更简单。
答案 1 :(得分:4)
试试这个:
(map #(apply area %) (partition 2 [2 5 6 6]))
答案 2 :(得分:1)
map
需要为函数所需的每个参数提供单独的序列参数:
(map [2 6] [5 6])