English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой статье вы узнаете о выражении when в Kotlin через различные примеры.
Выражение when в Kotlin можно рассматривать какJava switch-выражениезамена. Она оценивает один из многих вариантов кода.
fun main(args: Array<String>) { val a = 12 val b = 5 println("Ввод операторов +, -, * или /") val operator = readLine() val result = when (operator) { "+" -> a + b "-" -> a - b "*" -> a * b "/" -> a / b else -> "Оператор $operator является无效ным оператором." } println("result = $result") }
Когда вы запустите программу, вывод будет выглядеть так:
Ввод операторов +, -, * или / * result = 60
Указанная программа получает строку ввода от пользователя (рекомендуется прочитать:Получение строки ввода от пользователя в KotlinПредположим, что пользователь вводит *. В этом случае будет вычислен выражение a * b и значение будет присвоено переменной result.
Если ни одно из условий не выполняется (пользователь вводит любую другую опцию, кроме +, -, *, или /), ветвь else будет оценена.
В上面的 примере мы используем when в качестве выражения. Но when не обязателен для использования в качестве выражения. Например,
fun main(args: Array<String>) { val a = 12 val b = 5 println("Ввод операторов +, -, * или /") val operator = readLine() when (operator) { "+" -> println("$a + $b = ${a + b}") "-" -> println("$a - $b = ${a - b}") "*" -> println("$a * $b = ${a * b}") "/" -> println("$a / $b = ${a / b}") else -> println("$operator is invalid") } }
Когда вы запустите программу, вывод будет выглядеть так:
Ввод операторов +, -, * или / - 12 - 5 = 7
В данном случае, when не является выражением (возвратное значение when не назначается ни к одному объекту). В этом случае, ветвь else не обязательна.
1、Сочетание двух или более условий分支 с помощью запятой.Например:
fun main(args: Array<String>) { val n = -1 when (n) { 1, 2, 3 -> println("n является положительным целым числом, меньшим 4.") 0 -> println("n равно 0 ") -1, -2 -> println("n является отрицательным целым числом, большим -3.") } }
При выполнении этого программы, вывод будет:
n является отрицательным целым числом, большим -3.
2、Проверка значения в диапазоне.Например:
fun main(args: Array<String>) { val a = 100 when (a) { in 1..10 -> println("A является положительным числом, меньшим 11.") in 10..100 -> println("Положительное число между 10 и 100 (включая 10 и 100)") } }
При выполнении этого программы, вывод будет:
Положительное число между 10 и 100 (включая 10 и 100)
Чтобы проверить тип значения в время выполнения, можно использовать операторы is и !is. Например,
when (x) { is Int -> print(x + 1) is String -> print(x.length + 1) is IntArray -> print(x.sum()) }
4. Использование выражения в качестве условия分支а.Например:
fun main(args: Array<String>) { val a = 11 val n = "11" when (n) { "cat" -> println("Cat? Really?") 12.toString() -> println("Close but not close enough.") a.toString() -> println("Bingo! It's eleven.") } }
При выполнении этого программы, вывод будет:
Bingo! It's eleven.