0Pricing
Kotlin Academy · Урок

when как выражение

Возвращайте значения из when

«when как выражение» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

when как выражение

when в Kotlin — это больше, чем оператор выбора. Это выражение, то есть оно создаёт значение, которое можно присвоить или вернуть.

Благодаря этому логика ветвления становится краткой и понятной.

Возврат значения

При использовании в качестве выражения каждая ветвь предоставляет результат. Значение подходящей ветви становится результатом всего выражения when.

fun main() {
    val day = 3
    val name = when (day) {
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        else -> "Other"
    }
    println(name)
}

else обязателен

При использовании в качестве выражения when должен охватывать все случаи. Для произвольных значений это означает наличие ветви else.

Без неё компилятор не может гарантировать, что будет получено значение.

fun grade(score: Int): String = when {
    score >= 90 -> "A"
    score >= 80 -> "B"
    else -> "C"
}

fun main() {
    println(grade(85))
}

Несколько значений в одной ветви

Разделяйте несколько значений запятыми, чтобы использовать одну ветвь.

Это чище, чем повторять одно и то же тело.

fun main() {
    val day = 6
    val type = when (day) {
        1, 2, 3, 4, 5 -> "Weekday"
        6, 7 -> "Weekend"
        else -> "Invalid"
    }
    println(type)
}

when без аргумента

Не указывайте проверяемое значение, и каждая ветвь станет логическим условием.

Так можно заменить цепочку if/else if аккуратным блоком.

fun main() {
    val temp = 18
    val feel = when {
        temp < 0 -> "Freezing"
        temp < 15 -> "Cold"
        temp < 25 -> "Mild"
        else -> "Hot"
    }
    println(feel)
}

Диапазоны в ветвях

Ветви могут проверять диапазоны с помощью in.

Так числовые категории выражаются очень естественно.

fun main() {
    val score = 73
    val band = when (score) {
        in 0..59 -> "Fail"
        in 60..79 -> "Pass"
        in 80..100 -> "Excellent"
        else -> "Invalid"
    }
    println(band)
}

Проверка типов в ветвях

Ветви могут проверять типы с помощью is.

Результат каждой ветви может иметь свой тип, а when возвращает общий тип.

fun describe(x: Any): String = when (x) {
    is Int -> "Integer"
    is String -> "Text"
    else -> "Unknown"
}

fun main() {
    println(describe(42))
    println(describe("hi"))
}

Блоки ветвей

Ветвь может быть блоком из нескольких инструкций. Последнее выражение в блоке является его значением.

fun main() {
    val n = 5
    val result = when {
        n > 0 -> {
            val doubled = n * 2
            "Positive, doubled is " + doubled
        }
        else -> "Non-positive"
    }
    println(result)
}

Прямой возврат when

Функция может напрямую вернуть выражение when, используя тело из одного выражения.

Это очень распространённый и лаконичный стиль Kotlin.

fun sign(n: Int): String = when {
    n > 0 -> "positive"
    n < 0 -> "negative"
    else -> "zero"
}

fun main() {
    println(sign(-4))
}

Сохранение проверяемого значения

Вы можете объявить проверяемое значение внутри when, чтобы оно было доступно в ветвях.

Так область действия временного значения остаётся ограниченной.

fun describeLength(text: String): String = when (val len = text.length) {
    0 -> "empty"
    in 1..5 -> "short (" + len + ")"
    else -> "long (" + len + ")"
}

fun main() {
    println(describeLength("hello"))
}

Соберём всё вместе

Как выражение, when — мощный способ создавать значения:

  • Каждая ветвь предоставляет результат
  • else обеспечивает охват всех случаев
  • Поддерживаются запятые, диапазоны, типы и блоки
fun ticketPrice(age: Int): Int = when {
    age < 6 -> 0
    age < 18 -> 10
    age >= 65 -> 8
    else -> 15
}

fun main() {
    println(ticketPrice(4))
    println(ticketPrice(70))
}

Быстрая проверка

Проверьте, насколько хорошо Вы поняли использование when в качестве выражения.

Итоги

Вы научились использовать when в качестве выражения:

  • Оно возвращает значение подходящей ветви
  • Для охвата всех случаев нужен else
  • Поддерживаются запятые, диапазоны, проверки типов и блоки

Далее Вы увидите, как умные приведения позволяют компилятору сужать типы за Вас.

Часто задаваемые вопросы

Урок «when как выражение» бесплатный?

Да — полный текст урока «when как выражение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «when как выражение»?

Возвращайте значения из when Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «when как выражение»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. when как выражение
  2. Умные приведения типов
  3. Операторы is и as
  4. Исчерпывающий when
← Назад к Kotlin Academy