Abh*_*kar 2 iterator functional-programming scala filter
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)
Run Code Online (Sandbox Code Playgroud)
输出:
List(2, 3, 4, 5, 6, 7, 8, 9)
List(2, 4, 6, 8)
Run Code Online (Sandbox Code Playgroud)
为什么?我期待两者的输出相同。
dropWhile丢弃条件为的集合开始处的所有项目true。一旦第一个项目不符合条件,它就会停止丢弃。
filter丢弃整个集合中条件不为真的所有项目。它不会停止,直到收集结束。
在您的情况下,dropWhile下降1但在到达时停止,2因为条件_ % 2 != 0为假。
filter,另一方面,丢弃所有_ % 2 == 0为假的值,即所有奇数。