Условные операторы позволяют проверять условия и выполнять операции в зависимости от результата. В Kotlin есть два основных типа: if else и when (аналог switch-case).
Оператор if else
Рассмотрим пример с необязательной строковой переменной и булевой переменной:
var word: String? = null
var isOscar = true
Простой пример:
if (word == null) {
println("Переменная word равна значению null")
}
Результат: «Переменная word равна значению null» (при word == null). Если word имеет значение, например, «Hello», вывод отсутствует. В блоке if с одной строкой фигурные скобки можно опустить; при нескольких строках они обязательны.
Оператор else
else используется с if и выполняется, если предыдущие условия ложны:
if (word == null) {
println("Переменная word равна значению null")
} else {
println("Переменная word не равна значению null")
}
Если word не равно null, выведется «Переменная word не равна значению null».
Вложенные условия if else
Вложенные операторы else if позволяют добавлять проверки:
if (word == null) {
println("Переменная word равна значению null")
} else if (word == "Hello") {
println(word)
} else {
println("Переменная word имеет другое значение")
}
Если word == null ложно, проверяется word == "Hello". Если и оно ложно, выполняется else. Выполнение успешного условия прерывает проверку последующих else if. Фигурные скобки необходимы из-за наличия нескольких строк кода в блоках.
Логические операторы && (И) и || (ИЛИ)
Условия можно объединять с помощью && («И») и || («ИЛИ»):
if (isOscar == false || word == null) {
println("Что-то сработало")
}
Условие истинно, если isOscar равно false или word равно null. && требует истинности обоих условий.
Оператор when
when — аналог switch-case. Пример:
val number = 5
Использование when:
when (number) {
null -> println("Переменная равна null")
10 -> println("Переменная равна 10")
6 -> println("Переменная равна 6")
190 -> println("Переменная равна 190")
5 -> println("Переменная равна 5")
else -> println("Переменная имеет другое значение")
}
Выводится текст в зависимости от значения number. else выполняется, если ни одно условие не совпало.
Сокращённые формы
Сокращённая форма if else
val res = if (number > 30) 1 else 0
Эквивалентно:
var res = 0
if (number > 30) {
res = 1
} else {
res = 0
}
Сокращённая форма when
val wordAwards = when (number) {
null -> "ничего"
else -> number.toString()
}
Если number равно null, wordAwards будет «ничего», иначе — строковое представление number.
Kotlin предоставляет гибкие инструменты для работы с условными операторами, позволяющие эффективно обрабатывать различные сценарии. Сокращенные формы повышают читаемость и лаконичность кода.