由于Scala没有旧的Java风格的带索引的for
循环,
// does not work
val xs = Array("first", "second", "third")
for (i=0; i<xs.length; i++) {
println("String #" + i + " is " + xs(i))
}
我们如何高效地迭代,而且不使用var
?
你可以这样做
val xs = Array("first", "second", "third")
val indexed = xs zipWithIndex
for (x <- indexed) println("String #" + x._2 + " is " + x._1)
但是这个列表被遍历了两次——并不是很高效。
while
循环。据我回忆,几年前曾经有一个争论,是否应该让Scala继承Java的for(;;)
循环,而当时决定不采用这种方式是因为其增加的复杂性没有带来足够的好处。 - Kipton Barros