Эффективная итерация с индексом в Scala

Поскольку в Scala нет старого стиля Java для циклов с индексом,

// 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)

, но список просматривается дважды - не очень эффективно.

77
задан snappy 26 July 2011 в 21:21
поделиться