В Kotlin эквивалентное выражение when
выглядит следующим образом:
val c = // some char
val num = 100 + when (c) {
'c' -> 10
'a', 'd', 'e' -> 100
else -> 0
}
Обратите внимание, что в этом случае необходим else
, так как when
должен быть исчерпывающим , поскольку оно используется в качестве выражения en, т.е. оно должно охватывать все возможные значения c
.Если бы c
было Boolean
, например (или enum
или любое другое значение с ограниченным доменом), то вы могли бы охватить все возможные случаи без else
, поэтому компилятор разрешил бы следующее:
val c = // some boolean
val num = 100 + when (c) {
true -> 10
false -> 0
}
when
не обязательно должен быть исчерпывающим, если он используется не как выражение, а как традиционный оператор потока управления (например, оператор pre-Java 12 switch
), как показано нижефрагмент:
val c = // some char
var num = 100
when (c) {
'a', 'd', 'e' -> num += 100
'c' -> num += 10
}