向量在map语句中做了什么?

时间:2011-10-12 04:35:38

标签: map clojure

在一本Clojure书中,我找到了一个带有3个args的地图函数:

(Map vector (iterate inc 0) coll)

矢量在做什么?该函数如何接受3个args而不是标准2?

1 个答案:

答案 0 :(得分:8)

map函数接受可变数量的参数。所需的第一个参数是一个函数,然后您可以传递任意数量的集合。当传递多个集合时,每个集合中的相应元素将作为参数传递给函数(例如,如果传递一个集合,函数将接收一个参数,如果传递三个集合,它将接收三个参数)。

对于vectorvector函数通常做同样的事情 - 从其参数中创建一个向量。例如,(vector 1 100 1000)[1 100 1000]。在这种情况下,它的参数将是两个集合的第n个元素:

  1. 从零开始的无限整数序列

  2. coll

  3. 中的任何内容

    实际上,这会将coll中的每个项目转换为包含项目索引后跟项目的向量。因此,如果coll[a b c],则会为您提供([0 a] [1 b] [2 c])