3.1. Looping with for and foreach
Problem
You want to iterate over the elements in a collection, either to operate on each element in the collection, or to create a new collection from the existing collection.
Solution
There are many ways to loop over Scala collections, including
for loops, while loops, and collection methods like
foreach, map, flatMap, and more. This solution focuses
primarily on the for loop and
foreach method.
Given a simple array:
vala=Array("apple","banana","orange")
I prefer to iterate over the array with the following for loop syntax, because it’s clean and easy
to remember:
scala> for (e <- a) println(e)
apple
banana
orangeWhen your algorithm requires multiple lines, use the same for loop syntax, and perform your work in a
block:
scala>for (e <- a) {|// imagine this requires multiple lines|val s = e.toUpperCase|println(s)|}APPLE BANANA ORANGE
Returning values from a for loop
Those examples perform an operation using the elements in an
array, but they don’t return a value you can use, such as a new array.
In cases where you want to build a new collection from the input
collection, use the for/yield
combination:
scala> val newArray = for (e <- a) yield e.toUpperCase
newArray: Array[java.lang.String] = Array(APPLE, BANANA, ORANGE)The for/yield construct
returns a value, so in this case, the array newArray contains uppercase versions of the
three strings in the initial array. Notice that an input Array yields an Array (and not something else, like a
Vector ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access