下面显示了修饰符“while”表示一旦元素匹配检查,迭代将停止:
=> (for [x [3 2 3 1] :while (< x 3)] x)
()
但是为什么以下不停止迭代?在我的(错误)理解中,它应该返回一个空列表。
=> (for [x [3 2 3 1] y [:a :b] :while (< x 3)] [x y])
([2 :a] [2 :b] [1 :a] [1 :b])
实际上,在这种情况下,“when”和“while”修饰符之间没有区别。
=> (for [x [3 2 3 1] y [:a :b] :when (< x 3)] [x y])
([2 :a] [2 :b] [1 :a] [1 :b])
那是怎么发生的?