在科特林,当
takeWhile
被称为,
takeWhile
立即迭代序列并打印0到2,并生成
List
。只有在那之后
forEach
开始跑步,打印1和2。
要复制Scala的行为,您需要
对于每个
使用序列,而不是
takeWhile
a.
Sequence
可以做到这一点:
generateSequence {
println("i=$i")
i += 1
i
}.takeWhile{it < 3}.forEach { println("I=$it")}
对的操作
序列
他们都很懒惰。除非绝对必要,否则他们不会消耗序列。