Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpEsEW 74 of 123 menu
◀ ▶

Разбор enum в when в Kotlin

Конструкция when по значению enum class перебирает известные компилятору константы - так же, как ветки по подтипам при наследовании. Если перечислены все члены enum, выражение считается исчерпывающим и else можно опустить:

enum class Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } fun label(day: Day): String = when (day) { Day.MONDAY -> "start" Day.TUESDAY -> "mid" Day.WEDNESDAY -> "mid" Day.THURSDAY -> "mid" Day.FRIDAY -> "end" Day.SATURDAY -> "rest" Day.SUNDAY -> "rest" } fun main() { println(label(Day.FRIDAY)) }

Тот же when может возвращать значение в переменную. Для enum с полным набором веток тип результата выводится без else:

enum class PortKind { HTTP, HTTPS, FTP } fun main() { val kind = PortKind.HTTPS val scheme = when (kind) { PortKind.HTTP -> "http" PortKind.HTTPS -> "https" PortKind.FTP -> "ftp" } println(scheme) }

Несколько констант можно объединить в одну ветку через запятую, если для них нужен один и тот же результат:

enum class Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } fun isWeekend(day: Day): Boolean = when (day) { Day.SATURDAY, Day.SUNDAY -> true Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIDAY -> false } fun main() { println(isWeekend(Day.SUNDAY)) }

Объявите enum class Season с константами SPRING, SUMMER, AUTUMN и WINTER. Напишите функцию isWarm(season: Season): для SUMMER и SPRING верните true, для остальных - false. Вызовите с Season.WINTER и выведите результат.

Объявите enum class Role с константами GUEST, USER и ADMIN. Дано:

val role = Role.USER

С помощью when для переменной role запишите в code число: GUEST - 0, USER - 1, ADMIN - 2. Выведите code.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить