Scala Language Basic If Expressions


In Scala (in contrast to Java and most other languages), if is an expression instead of a statement. Regardless, the syntax is identical:

if(x < 1984) {
   println("Good times")
} else if(x == 1984) {
   println("The Orwellian Future begins")
} else {
   println("Poor guy...")

The implication of if being an expression is that you can assign the result of the evalation of the expression to a variable:

val result = if(x > 0) "Greater than 0" else "Less than or equals 0"
\\ result: String = Greater than 0

Above we see that the if expression is evaluated and result is set to that resulting value.

The return type of an if expression is the supertype of all logic branches. This means that for this example the return type is a String. Since not all if expressions return a value (such as an if statement that has no else branch logic), it is possible that the return type is Any:

val result = if(x > 0) "Greater than 0"
// result: Any = Greater than 0

If no value can be returned (such as if only side effects like println are used inside the logical branches), then the return type will be Unit:

val result = if(x > 0) println("Greater than 0")
// result: Unit = ()

if expressions in Scala are similar to how the ternary operator in Java functions. Because of this similarity, there is no such operator in Scala: it would be redundant.

Curly braces can be omitted in an if expression if the content is a single line.