
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")
В примере выше
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