我正在解决这些4clojure.com问题(这是来自问题 33),我一生都无法弄清楚这是如何工作的:
(#(for [x %, i (range %2)] x) [1 2 3] 2) ; --> '(1 1 2 2 3 3)
我可以看到for绑定x到[1 2 3]然后做了两次(i绑定到'(0 1)),但我希望得到一个像'([1 2 3] [1 2 3]). 看起来这段代码以某种方式mapcat对输出进行了操作。
的文档字符串for包括以下内容:Collections are iterated in a nested fashion, rightmost fastest.... 这给了我i对 的值0, 1, 2的直觉x,但我不能说我理解发生了什么。
有人能以一种可以改善我对工作原理的心理模型的方式来解释正在发生的事情for吗?非常感谢!