Прямые ссылки на публичные уроки для быстрого старта и стабильной индексации lesson-страниц.
Условные операторы позволяют программе выполнять разные действия в зависимости от того, выполняется условие или нет. Условиями пронизана любая программа — это один из базовых столпов программирования.
Для создания условий в Kotlin используется конструкция if. Код внутри фигурных скобок выполнится только если выражение в круглых скобках вернёт true.
const val AGE_OF_MAJORITY = 18 const val RETIREMENT_AGE = 65 val userAge = 42 if (userAge >= AGE_OF_MAJORITY) { println("Показать экран со скрытым контентом") } if (userAge < AGE_OF_MAJORITY) { println("Вернуться на главный экран приложения") }
Чтобы не менять значение userAge вручную при каждом тестировании, можно использовать ввод с клавиатуры через readln(). Функция читает введённые данные как строку, поэтому для работы с числами необходимо сразу вызвать toInt() — он преобразует строку в целое число Int.
val userAge = readln().toInt()
Вводить нужно только целые числа — иначе
toInt()выбросит исключение.
Когда из двух условий if всегда верно только одно, второй блок удобно заменить на else («иначе»). else выполняется, если условие if выше вернуло false.
if (userAge >= AGE_OF_MAJORITY) { println("Показать экран со скрытым контентом") } else { println("Вернуться на главный экран приложения") }
else работает только в паре с блоком if.
Для дополнительных проверок используется конструкция else if («ещё если»). Программа проверяет условия сверху вниз и останавливается, как только находит первое истинное.
if (userAge >= AGE_OF_MAJORITY) { println("Показать экран со скрытым контентом, например, для алкогольной продукции") } else if (userAge == 16 || userAge == 17) { println("Показать экран с ограниченным контентом, например, для товаров с рейтингом 16+") } else { println("Вернуться на главный экран приложения, так как доступ ограничен для вашего возраста") }
Если ни одно из условий не истинно — выполняется блок else.
Без фигурных скобок — если тело блока содержит только одну строку:
if (userAge >= AGE_OF_MAJORITY) println("Показать экран со скрытым контентом") else if (userAge == 16 || userAge == 17) println("Показать экран с ограниченным контентом") else println("Вернуться на главный экран приложения")
Сокращает запись, но снижает читабельность — используйте обдуманно.
В Kotlin конструкция if else может возвращать значение. Это позволяет записать результат условия в переменную и использовать его в одном месте.
val resultText = if (userAge >= AGE_OF_MAJORITY) "Показать экран со скрытым контентом" else if (userAge == 16 || userAge == 17) "Показать экран с ограниченным контентом" else "Вернуться на главный экран приложения" println(resultText)
Все ветки должны возвращать значения одного типа — например, везде
String.
when — читабельная альтернатива цепочке if else, особенно при трёх и более ветках. Конструкция сравнивает переданное значение с перечисленными вариантами и выполняет соответствующий блок. else срабатывает, если ни один вариант не совпал.
when (userAge) { 10 -> println("Ввели число 10") 20 -> println("Ввели число 20") 42 -> println("Ввели число 42") else -> println("Введено другое число") }
В when можно передавать базовые типы (Int, String, Boolean) и более сложные объекты.
Как и if else, when может возвращать значение. В этом случае в каждой ветке указывается не вызов функции, а само возвращаемое значение.
val consoleNumber = when (userAge) { 10 -> "Ввели число 10" 20 -> "Ввели число 20" 42 -> "Ввели число 42" else -> "Введено другое число" } println(consoleNumber)
Если в ветке нужно выполнить несколько действий — используйте фигурные скобки. Последнее выражение в блоке будет считаться возвращаемым значением.
val consoleNumber = when (userAge) { 10 -> { println("Дополнительное действие, если ввели 10") "Ввели число 10" } 20 -> "Ввели число 20" 42 -> "Ввели число 42" else -> "Введено другое число" } println(consoleNumber)
Инструкции в блоке выполняются сверху вниз: сначала отработает println, затем строка вернётся как результат ветки и запишется в consoleNumber.