1

为什么(range)在以下示例中能够重现索引值?我想编写一个 defn 定义的函数,但看不到这个例子是如何重现它的作用的。我知道 # 正在创建一个匿名函数。

那么,假设(def d1 [:a :b :c])以下范围如何生成索引?

(#(map list % (range)) d1)
((:a 0) (:b 1) (:c 2))
4

2 回答 2

2

range返回从零开始的无限整数序列。当map传递两个集合参数时,它会f使用两个参数进行调用,并从集合中成对地获取它们。因此,您f将为 中的每个元素调用一次xd1并带有两个参数:x及其在 中的索引d1

顺便说一句,请粘贴有效或至少有意义的代码。这#是在一个胡说八道的地方,并且括号不平衡。

于 2013-06-11T18:56:39.687 回答
1

如果我们应用匿名函数,我们得到(map list d1 (range)). range不带参数,创建一个从 2 到无穷大的列表。因此,我们调用mapwithlist作为函数参数,d1以及从 0 到无穷大的序列作为其他参数。作用是map:它将给定函数应用于给定序列中的元素,直到其中一个序列用完元素。所以我们得到的元素是(list first-element-of-d1 first-element-of-range)(list second-element-of-d1 second-element-of-range)以此类推,直到我们遍历完d1.

于 2013-06-11T18:56:31.857 回答