For loops in Scala provide a powerful and flexible way to iterate over collections and generate sequences. They are essential for performing repetitive tasks and processing data efficiently.
The basic syntax of a Scala for loop is as follows:
for (variable <- iterable) {
// loop body
}
Here, variable
takes on each value from the iterable
in turn, and the loop body is executed for each iteration.
Scala for loops excel at iterating over collections. Here's an example using a List:
val fruits = List("apple", "banana", "cherry")
for (fruit <- fruits) {
println(fruit)
}
This loop will print each fruit on a new line.
Scala offers a concise way to create loops that iterate over a range of numbers:
for (i <- 1 to 5) {
println(i)
}
This loop prints numbers from 1 to 5 (inclusive). Use until
instead of to
for an exclusive upper bound.
You can add conditions to your for loops using guards:
for (i <- 1 to 10 if i % 2 == 0) {
println(i)
}
This loop only prints even numbers between 1 and 10.
Scala allows for elegant nested loops using multiple generators:
for {
i <- 1 to 3
j <- 'a' to 'c'
} println(s"$i$j")
This concise syntax produces combinations of numbers and letters.
Scala's for loops can also be used to create new collections, known as for comprehensions:
val squares = for (i <- 1 to 5) yield i * i
// Result: Vector(1, 4, 9, 16, 25)
The yield
keyword is used to generate a new collection based on the loop's output.
map
, filter
, and foreach
for more functional approaches.Scala for loops offer a versatile and readable way to iterate and generate sequences. They integrate well with Scala's functional programming paradigm, especially when used in for comprehensions. As you advance in Scala, you'll find for loops to be a fundamental tool in your programming toolkit.
To further enhance your Scala skills, explore Scala Pattern Matching and Scala Higher-Order Functions, which often complement for loops in more advanced scenarios.