2
我通過4clojure.com
問題(這是從問題33)的工作,我不能爲我的生活弄清楚如何工作的:#(對於[x%,i(範圍%2)] x)是怎麼做的呢?
(#(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
對x
的價值0, 1, 2
,但我不能說我明白髮生了什麼。
有人可以解釋發生了什麼,以改善我的心智模型for
如何工作?非常感謝!
「x」中的每個元素與「i」中的元素一樣多次使用。例如:'(for [x [1 2 3] i [0 0]] x)'會給你同樣的結果'(1 1 2 2 3 3)' – tolitius
tolitius和Jared314,謝謝你的答案。 Jared314,我的想法是有關'x'綁定的錯誤。你的回答 - 寫得非常好 - 幫助我理解了另一種「for」的用法,這也讓我感到困惑。再次感謝! –