val xs = Iterator
.from(1)
.dropWhile(_ % 2 != 0)
.takeWhile(_ < 10)
.toList
val ys = Iterator
.from(1)
.filter(_ % 2 == 0)
.takeWhile(_ < 10)
.toList
println(xs)
println(ys)
输出:
List(2, 3, 4, 5, 6, 7, 8, 9)
List(2, 4, 6, 8)
为什么?我期望两者的输出是相同的。
发布于 2018-07-30 02:57:59
对于条件为true
的集合,dropWhile
将丢弃集合开头的所有项。一旦第一项不符合条件,它就会立即停止丢弃。
filter
将丢弃整个集合中条件不为真的所有项。它不会停止,直到收集结束。
在您的示例中,dropWhile
丢弃1
,但在达到2
时停止,因为条件_ % 2 != 0
为false。
另一方面,filter
会删除_ % 2 == 0
为false的所有值,这些值都是奇数。
https://stackoverflow.com/questions/51583361
复制相似问题