В этой статье вы узнаете, когда строить в Kotlin с помощью различных примеров.
Котлин при создании
when
Конструкт в Котлин можно рассматривать в качестве замены коммутатора Заявление Java. Он оценивает часть кода среди множества альтернатив.
Пример: Simple when Expression
fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() val result = when (operator) ( "+" -> a + b "-" -> a - b "*" -> a * b "/" -> a / b else -> "$operator operator is invalid operator." ) println("result = $result") )
Когда вы запустите программу, результат будет примерно таким:
Введите оператор +, -, * или / * результат = 60
Приведенная выше программа принимает строку ввода от пользователя (Рекомендуемая литература: получить ввод строки от пользователя в Kotlin). Допустим, пользователь вошел *
. В этом случае выражение a * b
оценивается, и значение присваивается переменной result.
Если ни одно из условий ветвления не удовлетворены (пользователь ввел ничего , кроме +
, -
, *, или /
), else
филиал оценивается.
В приведенном выше примере мы использовали when
в качестве выражения. Однако это не обязательно использовать when
в качестве выражения. Например,
fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") 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
ветка не обязательна.
Мало возможностей
Объедините два или более условия ветвления через запятую. Например,
fun main(args: Array) ( val n = -1 when (n) ( 1, 2, 3 -> println("n is a positive integer less than 4.") 0 -> println("n is zero") -1, -2 -> println("n is a negative integer greater than 3.") ) )
Когда вы запустите программу, вывод будет:
n - отрицательное целое число больше 3.
Проверить значение в диапазоне. Например,
fun main(args: Array) ( val a = 100 when (a) ( in 1… 10 -> println("A positive number less than 11.") in 10… 100 -> println("A positive number between 10 and 100 (inclusive)") ) )
Когда вы запустите программу, вывод будет:
Положительное число от 10 до 100 (включительно).
Проверьте, принадлежит ли значение определенному типу.
Чтобы проверить, принадлежит ли значение определенному типу во время выполнения, мы можем использовать операторы is и! Is. Например,
когда (x) (is Int -> print (x + 1) is String -> print (x.length + 1) is IntArray -> print (x.sum ()))
Используйте выражения как условие перехода. Например,
fun main(args: Array) ( 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.") ) )
Когда вы запустите программу, вывод будет:
Бинго! Одиннадцать.