For Loop in Scala

In Scala, For Loop can be used to

  • execute a block of statements over a range of items
  • execute a block of statements over a filtered range of items
  • yield a filtered output from a range of items
  • iterate over a collection
  • execute a block of statements over a range by skipping some of the items

Scala For Loop with a Range

Following is the syntax of for loop that iterates for a range of items.

</>
Copy
for( a <- range){
  // set of statements
}

You can mention the range as b to c for [b,c] or b until c for [b,c).

Example 1 – Scala For Loop with Range

In this example, we take a range of 1 to 4 i.e., [1, 4] and execute a print statement for each of the elements in the range using for loop.

example.scala

</>
Copy
object ForLoopExample {
  def main(args: Array[String]) {
    var a = 0
    // for loop over a range
    for( a <- 1 to 4){
      println( "a: " + a )
    }
  }
}

Output

a: 1
a: 2
a: 3
a: 4

In this example, we take a range of 1 until 4 i.e., [1,4)

example.scala

</>
Copy
object ForLoopExample {
  def main(args: Array[String]) {
    var a = 0
    // for loop over a range
    for( a <- 1 until 4){
      println( "a: " + a )
    }
  }
}

Output

a: 1
a: 2
a: 3

Scala For Loop with a Filtered Range

Following is the syntax of for loop that iterates for a filtered range of items.

</>
Copy
for( a <- range if boolean_expression){
  // set of statements
}

You can mention the range as b to c for [b,c] or b until c for [b,c).

boolean_expression has to evaluate to a true or false.

Example 2 – Scala For Loop with Filtered Range

In this example, we take a range of 1 to 20 i.e., [1, 20] and print only those elements that are exactly divisible by 5 using for with filtered range.

example.scala

</>
Copy
object ForLoopExample {
  def main(args: Array[String]) {
    var a = 0
    println("Printing multiples of 5 within the range 1 to 20")
    // for loop over a filtered range
    for( a <- 1 to 20 if a%5==0){
      println( "a: " + a )
    }
  }
}

Output

Printing multiples of 5 within the range 1 to 20
a: 5
a: 10
a: 15
a: 20

In this example, we take a range of 1 until 4 i.e., [1,4)

Scala For Loop to Yield an output from Range

yield keyword is used to output a range from an input range and a condition.

Following is the syntax of for loop to yield output.

</>
Copy
 var output = for(a <- input_range if boolean_expression) yield a

output is a vector that contains elements from input_range satisfying the boolean_expression.

boolean_expression has to evaluate to a true or false.

Example 1 – For Loop Yield

In this example, we take a range of 1 to 20 i.e., [1, 20] and yield those values that are exactly divisible by 6 into a vector.

example.scala

</>
Copy
object ForLoopExample {
  def main(args: Array[String]) {
    var a = 0
    // yield with for loop
    var output = for(a <- 1 to 20 if a%6==0) yield a
    println(output)
  }
}

Output

Vector(6, 12, 18)

Conclusion

In this Scala Tutorial, we learned about For Loop in Scala, and how to use it with Ranges, Filtered Ranges, etc., with the help of examples.