Kotlin When: Как использовать и оптимизировать switch-case
Kotlin when - это выражение, которое может использоваться вместо большого количества if-else ветвлений и switch-case в Java. Оно представляет собой более компактный и читаемый способ написания условного выражения в Kotlin.
Конструкция when в Kotlin имеет следующий синтаксис:
when (variable) {
value1 -> statement1
value2 -> statement2
value3 -> statement3
else -> statement4
}
В этой конструкции, variable - это переменная, которую мы проверяем на соответствие различным значениям. Каждое значение сравнивается с переменной с помощью оператора ->, и если оно соответствует переменной, то выполняется соответствующий этому значению statement. Блок else не является обязательным, он используется в том случае, если ни одно из значений не соответствует переменной.
Рассмотрим пример использования конструкции when в Kotlin для определения типа значения:
fun getValueType(value: Any) {
when (value) {
is Int -> println("The value is integer")
is String -> println("The value is string")
is Boolean -> println("The value is boolean")
else -> println("The value is unknown")
}
}
В этом примере, функция getValueType() получает на вход значение типа Any и определяет его тип с помощью конструкции when. Каждый блок case содержит проверку типа значения с помощью оператора is и соответствующее сообщение. Если значение не соответствует ни одному из типов, то выполняется блок else.
Конструкция when также может использоваться для проверки диапазона значений:
fun printScore(score: Int) {
when (score) {
in 90..100 -> println("A")
in 80..89 -> println("B")
in 70..79 -> println("C")
else -> println("F")
}
}
В этом примере, функция printScore() получает на вход оценку и определяет буквенный эквивалент с помощью конструкции when и проверки диапазона значений.
Конструкция when также поддерживает использование более сложных выражений:
fun calculate(num1: Int, operator: String, num2: Int) {
when {
operator == "+" -> println(num1 + num2)
operator == "-" -> println(num1 - num2)
operator == "*" -> println(num1 * num2)
operator == "/" -> println(num1 / num2)
else -> println("Unknown operator")
}
}
В этом примере, функция calculate() получает на вход два числа и оператор и выполняет соответствующее действие с помощью конструкции when и сравнения выражения с каждым оператором. Если оператор неизвестен, то выполняется блок else.
Таким образом, конструкция when в Kotlin представляет собой более компактный и читаемый способ написания условных выражений в языке программирования Kotlin. Ее можно использовать для проверки значений переменных на соответствие определенным значениям, проверки диапазона значений и сравнения сложных выражений.