Scala FAQ: Can you share some examples of the Scala for loop syntax?
Sure. There are several ways you can write a Scala for
loop, and I’ll try to show a short example of each of those. I’m going to start with a comparison to Java for
loops, because that's what I was just thinking about.
Java for loop with counter
In Java you might write a for
loop with a counter like this:
for (int i = 0; i < 10; i++) { System.out.println(i); }
The equivalent for
loop in Scala 2 looks like this:
for (i <- 1 to 10) { println(i) }
(The use of parentheses isn’t necessary in either example, but most for loops will be longer.)
Java 5 for loop vs Scala for loop
Beginning with Java 5 you can write a Java for
loop like this:
List list = getList(); for (String s : list) { // treat s as a String here; no casting needed System.out.println(s); }
The equivalent Scala for
loop looks like this:
for (s <- getList) { println(s) }
Scala for loop with yield
With Scala you can also write a Scala for
loop with a yield statement, as shown in these examples:
scala> for (i <- 1 to 5) yield i res0: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5) scala> for (i <- 1 to 5) yield i * 2 res1: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10) scala> for (i <- 1 to 5) yield i % 2 res2: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 0, 1, 0, 1)
Scala for loop with guards
You can also create Scala for
loops with embedded if
statements, or guards. A for
loop with a guard looks like this:
for { i <- 0 to 10 if i % 2 == 0 } println(i)
This prints:
0 2 4 6 8 10
Notice that I used the {
and }
characters around the body of the for
loop in this example. It’s much more common to use these brackets when the body contains multiple lines of code, as in this example.
A for
loop with multiple guards looks like this:
for { i <- 0 to 10 if i % 2 == 0 if i > 5 } println(i)
This prints:
6 8 10
Scala for loop syntax examples
I hope these Scala for
loop syntax examples have been helpful.