Scala Book

The if/then/else Construct

Language

A basic Scala if statement looks like this:

if (a == b) doSomething()

You can also write that statement like this:

if (a == b) {
    doSomething()
}

The if/else construct looks like this:

if (a == b) {
    doSomething()
} else {
    doSomethingElse()
}

The complete Scala if/else-if/else expression looks like this:

if (test1) {
    doX()
} else if (test2) {
    doY()
} else {
    doZ()
}

if expressions always return a result

A great thing about the Scala if construct is that it always returns a result. You can ignore the result as we did in the previous examples, but a more common approach — especially in functional programming — is to assign the result to a variable:

val minValue = if (a < b) a else b

This is cool for several reasons, including the fact that it means that Scala doesn’t require a special “ternary” operator.

Aside: Expression-oriented programming

As a brief note about programming in general, when every expression you write returns a value, that style is referred to as expression-oriented programming, or EOP. This is an example of an expression:

val minValue = if (a < b) a else b

Conversely, lines of code that don’t return values are called statements, and they are used for their side-effects. For example, these lines of code don’t return values, so they are used for their side effects:

if (a == b) doSomething()
println("Hello")

The first example runs the doSomething method as a side effect when a is equal to b. The second example is used for the side effect of writing a string to STDOUT. As you learn more about Scala you’ll find yourself writing more expressions and fewer statements. The differences between expressions and statements will also become more apparent.

Contributors to this page: