The if/then/else Construct
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.