💻 Немного о конструкции when в Kotlin



Конструкция when проверяет значение некоторого объекта и в зависимости от его значения выполняет тот или иной код. Конструкция when аналогична конструкции switch в других языках. Формальное определение:

when(объект){

значение1 -> действия1

значение2 -> действия2

...

значениеN -> действияN

}




Если значение объекта равно одному из значений в блоке кода when, то выполняются соответствующие действия, которые идут после оператора -> после соответствующего значения:

fun main() {

val isEnabled = true

when(isEnabled){

false -> println("isEnabled off")

true -> println("isEnabled on")

}

}


Здесь в качестве объекта в конструкцию when передается переменная isEnabled. Далее ее значение по порядку сравнивается со значениями в false и true. В данном случае переменная isEnabled равна true, поэтому будет выполняться код:

println("isEnabled on")






Выражение else



В примере выше isEnabled имела только 2 возможных варианта: true и false. Однако чаще бывают случаи, когда значения в блоке when не покрывают все возможные значения объекта. Дополнительное выражение else позволяет задать действия, которые выполняются, если объект не соответствует ни одному из значений:

val a = 30

when(a){

10 -> println("a = 10")

20 -> println("a = 20")

else -> println("неопределенное значение")

}


То есть в данном случае если переменная a равна 30, поэтому она не соответствует ни одному из значений в блоке when. И соответственно будут выполняться инструкции из выражения else.



Если надо, чтобы при совпадении значений выполнялось несколько инструкций, то для каждого значения можно определить блок кода:

var a = 10

when(a){

10 -> {

println("a = 10")

a *= 2

}

20 -> {

println("a = 20")

a *= 5

}

else -> { println("неопределенное значение")}

}

println(a)




📎 Читать подробнее



@android_its