if/else

Однострочное if выражение выглядит так:

val x = 1
if x == 1 then println(x)
// 1

Когда необходимо выполнить несколько строк кода после if, используется синтаксис:

if x == 1 then
  println("x is 1, as you can see:")
  println(x)
// x is 1, as you can see:
// 1

if/else синтаксис выглядит так:

if x == 1 then
  println("x is 1, as you can see:")
  println(x)
else
  println("x was not 1")
// x is 1, as you can see:
// 1

if/else if/else выглядит так же, как и в других языках:

def detect(x: Int) = 
  if x < 0 then
    println("negative")
  else if x == 0 then
    println("zero")
  else
    println("positive")
detect(-1)    
// negative    
detect(0) 
// zero 
detect(1) 
// positive 

При желании можно дополнительно включить оператор end if в конце каждого выражения:

if x == 1 then
  println("x is 1, as you can see:")
  println(x)
end if

if/else выражение всегда возвращает результат

Сравнения if/else образуют выражения - это означает, что они возвращают значение, которое можно присвоить переменной. Поэтому нет необходимости в специальном тернарном операторе. Пример:

val minValue = if a < b then a else b

Можно использовать if/else выражение в качестве тела метода:

def compare(a: Int, b: Int): Int =
  if a < b then -1
  else if a == b then 0
  else 1

Как будет видно дальше, все структуры управления Scala можно использовать в качестве выражений.

Программирование, ориентированное на выражения (expression-oriented programming или EOP) - стиль разработки, когда каждое написанное выражение возвращает значение.

И наоборот, строки кода, которые не возвращают значения, называются операторами или утверждениями и используются для получения побочных эффектов.

По мере погружения в Scala можно обнаружить, что пишется больше выражений и меньше утверждений.


Ссылки: