在一本Clojure书中,我找到了一个带有3个args的地图函数:
(Map vector (iterate inc 0) coll)
矢量在做什么?该函数如何接受3个args而不是标准2?
答案 0 :(得分:8)
map函数接受可变数量的参数。所需的第一个参数是一个函数,然后您可以传递任意数量的集合。当传递多个集合时,每个集合中的相应元素将作为参数传递给函数(例如,如果传递一个集合,函数将接收一个参数,如果传递三个集合,它将接收三个参数)。
对于vector
,vector
函数通常做同样的事情 - 从其参数中创建一个向量。例如,(vector 1 100 1000)
会[1 100 1000]
。在这种情况下,它的参数将是两个集合的第n个元素:
从零开始的无限整数序列
coll
实际上,这会将coll
中的每个项目转换为包含项目索引后跟项目的向量。因此,如果coll
为[a b c]
,则会为您提供([0 a] [1 b] [2 c])
。