【发布时间】:2011-10-12 04:35:37
【问题描述】:
在一本 Clojure 书中,我发现了一个带有 3 个参数的 map 函数:
(Map vector (iterate inc 0) coll)
向量在做什么?这个函数如何接受 3 个 args 而不是标准的 2 个?
【问题讨论】:
在一本 Clojure 书中,我发现了一个带有 3 个参数的 map 函数:
(Map vector (iterate inc 0) coll)
向量在做什么?这个函数如何接受 3 个 args 而不是标准的 2 个?
【问题讨论】:
map 函数接受可变数量的参数。所需的第一个参数是一个函数,然后您可以传递任意数量的集合。当传递多个集合时,每个集合中的对应元素将作为参数传递给函数(例如,如果传递一个集合,则函数将接收一个参数,如果传递三个集合,它将接收三个参数)。
至于vector,它和vector 函数通常做的一样——用它的参数创建一个向量。例如,(vector 1 100 1000) 给出[1 100 1000]。在这种情况下,它的参数将是两个集合的第 n 个元素:
从零开始的无限整数序列
coll 中的任何内容
实际上,这会将coll 中的每个项目转换为一个向量,该向量包含项目的索引,后跟项目。所以如果coll是[a b c],例如,它会给你([0 a] [1 b] [2 c])。
【讨论】: