Một số cách khác để lặp lại:
scala> xs.foreach (println)
first
second
third
foreach, và tương tự, map, sẽ trả về một thứ gì đó (kết quả của hàm, đối với println, Unit, vì vậy một Danh sách các Unit)
scala> val lens = for (x <- xs) yield (x.length)
lens: Array[Int] = Array(5, 6, 5)
làm việc với các phần tử, không phải chỉ mục
scala> ("" /: xs) (_ + _)
res21: java.lang.String = firstsecondthird
gấp
for(int i=0, j=0; i+j<100; i+=j*2, j+=i+2) {...}
có thể được thực hiện với đệ quy:
def ijIter (i: Int = 0, j: Int = 0, carry: Int = 0) : Int =
if (i + j >= 100) carry else
ijIter (i+2*j, j+i+2, carry / 3 + 2 * i - 4 * j + 10)
Phần mang theo chỉ là một số ví dụ, để làm điều gì đó với i và j. Nó không cần phải là một Int.
đối với những thứ đơn giản hơn, gần với vòng lặp for thông thường:
scala> (1 until 4)
res43: scala.collection.immutable.Range with scala.collection.immutable.Range.ByOne = Range(1, 2, 3)
scala> (0 to 8 by 2)
res44: scala.collection.immutable.Range = Range(0, 2, 4, 6, 8)
scala> (26 to 13 by -3)
res45: scala.collection.immutable.Range = Range(26, 23, 20, 17, 14)
hoặc không có lệnh:
List (1, 3, 2, 5, 9, 7).foreach (print)