Blog_Banner_Asset
    Homebreadcumb forward arrow iconBlogbreadcumb forward arrow iconFull Stack Developmentbreadcumb forward arrow iconScala For Loop | For Loop in Scala: Explained

Scala For Loop | For Loop in Scala: Explained

Last updated:
10th Jun, 2023
Views
Read Time
12 Mins
share image icon
In this article
Chevron in toc
View All
Scala For Loop | For Loop in Scala: Explained

In Scala, a for-loop is also known as for-comprehensions. It can be used to iterate, filter, and return a rehearsed collection. The for-comprehension looks quite similar to a for-loop in imperative languages; however, the difference is that it puts together a list of the results of alliterations.

Check out our free courses to get an edge over the competition

There are several forms of for-loop in Scala, which are as described below:

For-Loop with Ranges

Syntax

Ads of upGrad blog

The most uncomplicated syntax of a for-loop with ranges in Scala is as shown below:

for( var x <- Range ){

   statement(s);

}

As depicted above, the Range could be any range of numbers, represented as i to j or sometimes like i until j. The left-arrow ← operator is known as a generator because it generates individual values from a range.

Alternatively, one can also also use the syntax:

for(w <- range){

// Code..

}

Here, w is a variable, the left-arrow sign ← operator is the generator, and the range is the value which holds the starting and the ending values. The range is represented by using either i to j or i until j.

Scala For-Loop Example Using the Keyword ‘to’

Using ‘to’ with for-loop includes both the starting and the ending values. In the example shown below, we can use ‘to’ for printing values between 0 to n. In other words, the loop starts from 0 and ends at 10, which means we can print page numbers 0 to 10.

// Scala program to illustrate how to 

// create for loop using to 

object Main 

    def main(args: Array[String]) 

    { 

        println(“The value of w is:”); 

        // Here, the for loop starts from 0 

        // and ends at 10 

        for( w <- 0 to 10) 

        { 

            println(w); 

        } 

    } 

Check out upGrad’s Advanced Certification in Cyber Security

Output:

In the example shown above, the value of w is:

0

1

2

3

4

5

6

7

8

9

10

Read: Top 10 skills to become a full stack developer

upGrad’s Exclusive Software Development Webinar for you –

SAAS Business – What is So Different?

 

Scala For-Loop Example Using the Keyword ‘until’

The difference between using until and to is; to includes the starting and the ending values given in a range, whereas until excludes the last value of the given range. In the for-loop example illustrated below, we can use until to print values between 0 to n-1. In other words, the loop starts at 0 and ends at n-1, which comes out to 9. So, we can print page numbers 0 to 9.

// Scala program to illustrate how to

// create for loop using until

object Main 

{

    def main(args: Array[String])

    {

        println(“The value of w is:”);

        // Here, the for loop starts from 0 

        // and ends at 10

        for( w <- 0 until 10)

        {

            println(w);

        }

    }

}

Output:

In the example shown above, the value of w is:

0

1

2

3

4

5

6

7

8

9

Also Read: Python vs Scala 

Explore Our Software Development Free Courses

Multiple Values in For-Loop

We can also use multiple ranges in a single for-loop. These ranges are separated using a semicolon (;). Let us understand this with the help of an illustration. In the example given below, we have used two different ranges in a single loop, i.e., w <- 0 to 3; z <- 8 until 10.

// Scala program to illustrate how to

// create multiple ranges in for loop

object Main

{

    def main(args: Array[String]) 

    {

          

    // for loop with multiple ranges

        for( w <- 0 to 3; z<- 8 until 10 )

        {

            println(“Value of w is :” +w);

            println(“Value of y is :” +z);

        }

    }

}

Output:

Value of w is:0

Value of y is:8

Value of w is:0

Value of y is:9

Value of w is:1

Value of y is:8

Value of w is :1

Value of y is:9

Value of w is:2

Value of y is:8

Value of w is:2

Value of y is:9

Value of w is:3

Value of y is:8

Value of w is:3

Value of y is:9

Checkout: Full Stack Developer Salary in India

Explore our Popular Software Engineering Courses

The if/then/else Construct

Now that you have seen Scala for loop example, learn about if/then/else construct. The if/then/else construct in Scala is similar to other programming languages. It allows you to conditionally execute a block of code based on a boolean expression. Here’s an example:

val x = 10

if (x > 5) {

  println("x is greater than 5")

} else {

  println("x is less than or equal to 5")

}

The End If Statement

Unlike some other languages, Scala does not require an explicit “end if” statement to mark the end of an if/then/else construct. The end of the block is inferred by the closing brace (}).

If/Else Expressions Always Return a Result

In Scala, if/else constructs always return a result. This means you can assign the result of an if/else expression to a variable or use it as part of another expression. For example:

val result = if (x > 5) “x is greater than 5” else “x is less than or equal to 5”

println(result)

Aside: Expression-Oriented Programming

Scala promotes expression-oriented programming, where most constructs and statements are expressions that return a value. This allows for concise and expressive code. The if/else construct in Scala is an example of expression-oriented programming.

Multiple Generators

In Scala for loop can have multiple generators, separated by semicolons. Each generator introduces a new variable and a range of values to iterate over. Here’s an example of a for loop with multiple generators:

for {   i <- 1 to 3   j <- 1 to 2 } {   println(s”i: $i, j: $j”) }

Guards

Guards in Scala are conditions that can be added to for loops or pattern matching cases. They allow you to further filter the elements or patterns to be processed. Here’s an example of a for loop with a guard:

for {

  i <- 1 to 5

  if i % 2 == 0

} {

  println(i)

}

While Loops

Scala supports traditional while loops, where a block of code is repeatedly executed as long as a condition is true. Here’s an example:

var i = 0

while (i < 5) {

  println(i)

  i += 1

}

Match Expressions

Match expressions in Scala are similar to switch statements in other languages. They allow you to match a value against a set of patterns and execute the corresponding code block. Here’s an example:

val day = “Monday”

val result = day match {

  case “Monday” => “Start of the week”

  case “Friday” => “End of the week”

  case _ => “Other day”

}

println(result)

Using the Default Value

In match expressions, you can use the underscore (_) as a wildcard pattern to match any value. This can be used as a default case when none of the other patterns match. Here’s an example:

val x: Any = "Hello"

val result = x match {

  case 1 => "One"

  case "Hello" => "Hello"

  case _ => "Unknown"

}

println(result)

Handling Multiple Possible Matches on One Line

Scala allows you to handle multiple possible matches on one line using vertical bars (|). This can make your code more concise. Here’s an example:

val day = "Saturday"

val result = day match {

  case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" => "Weekday"

  case "Saturday" | "Sunday" => "Weekend"

  case _ => "Unknown"

}

println(result)

Using if Guards in Case Clauses

In match expressions, you can use if guards in case clauses to add additional conditions for pattern matching. Here’s an example:

val x = 10

val result = x match {

  case even if even % 2 == 0 => “Even”

  case _ => “Odd”

}

println(result)

Case Classes and Match Expressions

Match expressions work seamlessly with case classes in Scala. Case classes provide a convenient way to define immutable data structures. Here’s an example:

case class Person(name: String, age: Int)

val person = Person(“Alice”, 30)

val result = person match {

  case Person(“Alice”, age) => s”Alice, age $age”

  case Person(name, age) => s”Other person, name $name, age $age”

}

println(result)

Using a Match Expression as the Body of a Method

Scala allows you to use a match expression as the body of a method. This can be useful when you want to encapsulate pattern matching logic into a reusable method. Here’s an example:

def getMessage(day: String): String = day match {

  case “Monday” => “Start of the week”

  case “Friday” => “End of the week”

  case _ => “Other day”

}

println(getMessage(“Monday”))

Match Expressions Support Many Different Types of Patterns

Match expressions in Scala support various types of patterns, including constant patterns, variable patterns, tuple patterns, list patterns, and more. This makes them highly versatile and powerful. Here’s an example:

val x: Any = List(1, 2, 3)

val result = x match {

  case 1 => “One”

  case List(1, 2, 3) => “List with 1, 2, 3”

  case (a, b) => s”Tuple with elements $a and $b”

  case _ => “Unknown”

}

println(result)

Try/Catch/Finally

Scala provides a try/catch/finally construct for exception handling. You can use it to catch and handle exceptions that may occur during the execution of your code. Here’s an example:

try {

  // Code that may throw an exception

} catch {

  case ex: Exception => println(“Exception occurred: ” + ex.getMessage)

} finally {

  // Code that will always execute, regardless of whether an exception was thrown or not

}

For-Loop with Collections

In Scala, we can use for-loop to efficiently iterate collections like list, sequence, etc., either by using a for-each loop or a for-comprehensions loop. The syntax of a for-loop with collections in Scala is as shown below:

Syntax

for( var x <- List ){

   statement(s);

}

Here, the variable list is a collection type with a list of elements and a for-loop iterates through all the elements returning one element in x variable at a time.

Let us look at the demo program given below to understand a for-loop with collections. In the illustration, we have created a collection using the List variable to list authors based on their ranks.

// Scala program to illustrate how to

// use for loop with collection

object Main

{

    def main(args: Array[String])

    {

        var rank = 0;

        val ranklist = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // For loop with collection

        for( rank <- ranklist){

            println(“Author rank is : ” +rank);

        }

    }

}

Output:

Author rank is: 1

Author rank is: 2

Author rank is: 3

Author rank is: 4

Author rank is: 5

Author rank is: 6

Author rank is: 7

Author rank is: 8

Author rank is: 9

Author rank is: 10

For-Loop with Filters

For-loop in Scala allows you to filter elements from a given collection using one or more if statements in for-loop. Users can also add more than one filter to a ‘for’ expression using semicolons (;) to separate them. Listed below is the syntax for for-loop with filters.

Syntax

for( var x <- List

      if condition1; if condition2…

   ){

   statement(s);

}

Let us understand this better with the help of an example. The illustration given below uses two filters to segregate the given collection. For instance, in the sample below, the filters eliminate the list of authors with ranks greater than 2 and less than 7.

// Scala program to illustrate how to

// use for loop with filters

object Main

{

    def main(args: Array[String]) 

    {

        var rank = 0;

        val ranklist = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // For loop with filters

        for( rank <- ranklist

        if rank < 7; if rank > 2 )

        {

            println(“Author rank is : ” +rank);

        }

    }

}

Output:

Author rank is: 3

Author rank is: 4

Author rank is: 5

Author rank is: 6

In-Demand Software Development Skills

For-Loop with Yield

In Scala, the loop’s return value is stored in a variable or may return through a function. To do this, you should prefix the body of the ‘for’ expression with the keyword yield. Listed below is the syntax for for-loop with yield.

Syntax

var retVal = for{ var x <- List

   if condition1; if condition2…

}

yield x

Note − The curly braces list the variables and conditions, and retVal is a variable where all the values of x will be stored in the form of collection.

Let us understand this better with the help of an illustration. In the example given below, the output is a variable where all the rank values are stored in the form of a collection. The for-loop displays only the list of authors whose rank is greater than 4 and less than 8.

// Scala program to illustrate how to

// use for loop with yields

object Main

{

    def main(args: Array[String])

    {

        var rank = 0;

        val ranklist = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

          

        // For loop with yields

        var output = for{ rank <- ranklist

                    if rank > 4; if rank != 8 }

                    yield rank

          

        // Display result

        for (rank <- output)

        {

            println(“Author rank is : ” + rank);

        }

    }

}

Output:

Author rank is: 5

Author rank is: 6

Author rank is: 7

Author rank is: 9

Author rank is: 10

Ads of upGrad blog

Learn Software Development Courses online from the World’s top Universities. Earn Executive PG Programs, Advanced Certificate Programs, or Masters Programs to fast-track your career.

Read our Popular Articles related to Software Development

Conclusion 

If you’re interested to learn more about full-stack software development, check out upGrad & IIIT-B’s Executive PG Program in Full-stack Software Development which is designed for working professionals and offers 500+ hours of rigorous training, 9+ projects, and assignments, IIIT-B Alumni status, practical hands-on capstone projects & job assistance with top firms.

Profile

Rohan Vats

Blog Author
Software Engineering Manager @ upGrad. Passionate about building large scale web apps with delightful experiences. In pursuit of transforming engineers into leaders.

Frequently Asked Questions (FAQs)

1What is Scala programming language?

Scala is a general-purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It is a hybrid functional and object-oriented language, supports functional programming constructs such as higher-order functions and lazy evaluation, but it also has features of an object-oriented language such as classes, object literals, and type inference. Scala is one of the most prominent languages designed for the Java Virtual Machine (JVM), but can also be compiled to JavaScript source code or use the .NET Common Language Runtime (CLR).

2What are loops in programming?

Loops are programming statements that repeat a block of statements another number of times (an integer number). There are two types of loops — for and while. A loop repeats a block of code until a certain condition is filled. You can use a loop to perform the same task over and over again until the specified criteria is filled. There are several types of loops such as – for loop, while loop, do while loop, and foreach loop. Each of these types have their own advantages and use-cases. For example, if you want to loop through an array for a fixed number of times, you can use for loops. If you want to loop based on a condition, you can use while loops. If you want to access elements of an array, you can use foreach loops.

3What is the future of Scala language?

Scala is a general-purpose programming language that incorporates functional programming principles. It is platform independent. Scala is a statically typed language with type inference. It also allows the code to be written in an object-oriented style. Scala has rich libraries and it is conciseness in coding. These factors make Scala a very popular programming language. If you are a java programmer, then you can use Scala more easily. If you are not a Java programmer and still want to use Scala, then you can use the Scala interpreter system. Scala has a fast-growing community and getting to the top spot in the rankings is no longer a matter of time.