【发布时间】:2016-01-29 02:10:37
【问题描述】:
剧透警告:这是关于4Clojure question 157 的答案,索引序列。
这个问题的快速版本:在(map-indexed #(vector %2 %1) [:a :b :c])中,%2是什么?
索引序列 #157
将序列转换为包含原始元素及其索引的对序列。
(= (__ [:a :b :c]) [[:a 0] [:b 1] [:c 2]]) (= (__ [0 1 3]) '((0 0) (1 1) (3 2))) (= (__ [[:foo] {:bar :baz}]) [[[:foo] 0] [{:bar :baz} 1]])
我很快找到了答案:#(map reverse (map-indexed vector %)),但看到了似乎更好的答案,例如:
map-indexed #(vector %2 %1)
用户tomdmitriev。
问题:第二个参数从何而来?
那么,对于(map-indexed #(vector %2 %1) [:a :b :c]),%2 是什么?
返回一个惰性序列,该序列由将 f 应用于 0 的结果组成 和 coll 的第一项,然后将 f 应用于 1 和第二项 coll 等中的项目,直到 coll 用完。因此 函数 f 应该 接受 2 个参数,索引和项目。 不提供集合。 -- 我的重点
好吧,我也只提供了一个论点,即来自 4Clojure 问题的集合。我不确定这是如何工作的……是否存在某种隐含或隐含的论点?
感谢您帮助解决这个问题!
【问题讨论】:
标签: clojure