Kotlin Enum
Kotlin enum - это тип данных, который представляет собой ограниченный список фиксированных значений. Он позволяет определить группу именованных констант, которые являются инстансами этого перечисления.
Определение и использование Kotlin enum очень простое. Вот пример объявления enum для представления списка дней недели:
kotlin
enum class DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
В этом примере у нас есть enum с именем "DayOfWeek", который состоит из 7 констант, представляющих дни недели. Мы можем использовать эти константы, как обычно используем переменные:
kotlin
val day: DayOfWeek = DayOfWeek.MONDAY
println(day) // выводит: MONDAY
Одно из главных преимуществ Kotlin enum заключается в возможности добавления полей и методов. Например, мы можем добавить поле "abbreviation" к каждой константе в предыдущем примере:
kotlin
enum class DayOfWeek(val abbreviation: String) {
MONDAY("Mon"),
TUESDAY("Tue"),
WEDNESDAY("Wed"),
THURSDAY("Thu"),
FRIDAY("Fri"),
SATURDAY("Sat"),
SUNDAY("Sun")
}
val day: DayOfWeek = DayOfWeek.MONDAY
println(day.abbreviation) // выводит: Mon
В этом примере мы добавили конструктор ко всем константам enum, который принимает значение сокращения в качестве аргумента. Мы можем получить доступ к этому значению, используя свойство "abbreviation" каждой константы.
Кроме того, Kotlin enum поддерживает типичные операции, такие как сравнение по значению и последовательное прохождение по всем значениям. Например, мы можем использовать выражение when для обработки каждого значения enum:
kotlin
val day: DayOfWeek = DayOfWeek.TUESDAY
when (day) {
DayOfWeek.MONDAY -> println("It's Monday!")
DayOfWeek.TUESDAY -> println("It's Tuesday!")
// остальные дни недели...
else -> println("It's another day")
}
В этом примере мы используем выражение when для проверки значения переменной "day" и в зависимости от значения выводим соответствующее сообщение.
В заключение, Kotlin enum предоставляет эффективный способ определения и использования ограниченного списка значений. Он поддерживает добавление полей и методов, а также типичные операции, делая его мощным инструментом для структурирования кода и управления ограниченными наборами значений.