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 — локальная установка не требуется.
Все уроки этого курса
- when как выражение
- Умные приведения типов
- Операторы is и as
- Исчерпывающий when