Kotlin: Условные операторы if-else и when

Условные операторы позволяют проверять условия и выполнять операции в зависимости от результата. В 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 предоставляет гибкие инструменты для работы с условными операторами, позволяющие эффективно обрабатывать различные сценарии. Сокращенные формы повышают читаемость и лаконичность кода.

Что будем искать? Например,программа