type | layout | title | description | partof | overview-name | num | outof | previous-page | next-page | new-version |
---|---|---|---|---|---|---|---|---|---|---|
section | multipage-overview | The if/then/else Construct | This page demonstrates Scala's if/then/else construct, including several examples you can try in the REPL. | scala_book | Scala Book | 14 | 54 | control-structures | for-loops | /scala3/book/control-structures.html#the-ifthenelse-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() } elseif (test2) { doY() } else { doZ() }
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:
valminValue=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.
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:
valminValue=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.