val a = List(1, 2, 3, 4, 5)
val b = a.grouped(2).filter(_.length == 2).map(x => (x(0), x(1)))
//b.foreach(x => println(x))
val r = b.foldLeft((0, 0)) {
case ((m, n), (x, y)) => {
(m + x, n + y)
}
}
println(r)
程序为上述程序提供正确的输出(4,6)。但是当我取消注释上面的foreach语句时,它输出(0,0)。这里有什么问题?
答案 0 :(得分:4)
val b = a.grouped(2).filter(_.length == 2).map(x => (x(0), x(1)))
,b
'类型为Iterator
:
scala> :type b
Iterator[(Int, Int)]
所以,当您按b
迭代b.foreach(x => println(x))
时,此后当前迭代器b
为空,因为Iterator
只能迭代一次。