Определение перечислений
Наборы именованных констант
«Определение перечислений» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое перечисление
Перечисление определяет фиксированный набор именованных констант. Используйте его, когда значение может быть только одним из небольшого известного набора вариантов.
- Каждая константа является экземпляром типа перечисления.
- Компилятор гарантирует, что других значений быть не может.
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
fun main() {
val d = Direction.NORTH
println(d)
}Почему не использовать строки
Строки допускают опечатки и недопустимые значения. Перечисление делает недопустимые состояния невозможными: компилятор отклоняет любое значение, не входящее в объявленный набор.
enum class Status { ACTIVE, INACTIVE }
fun main() {
val s: Status = Status.ACTIVE
println("Current: $s")
}Объявление констант
Константы перечисляются между фигурными скобками и разделяются запятыми. По соглашению их записывают в формате UPPER_SNAKE_CASE.
enum class Size {
SMALL, MEDIUM, LARGE, EXTRA_LARGE
}
fun main() {
println(Size.EXTRA_LARGE)
}Каждая константа — объект
Каждая константа перечисления является единственным экземпляром типа перечисления. На неё всегда ссылаются через имя перечисления, например Color.RED.
enum class Color { RED, GREEN, BLUE }
fun main() {
val c = Color.GREEN
println(c == Color.GREEN)
}Сравнение значений перечисления
Константы перечисления можно сравнивать с помощью ==. Поскольку каждая из них является единственным экземпляром, равенство и идентичность ссылок совпадают.
enum class Light { RED, YELLOW, GREEN }
fun main() {
val signal = Light.RED
if (signal == Light.RED) println("Stop")
}Чтение свойства name
Каждая константа предоставляет встроенное свойство name: точную строку, указанную при её объявлении.
enum class Planet { MERCURY, VENUS, EARTH }
fun main() {
val p = Planet.EARTH
println(p.name)
}valueOf для строки
Сгенерированная функция valueOf() преобразует совпадающую строку в константу перечисления. Несовпадающая строка вызывает исключение.
enum class Day { MON, TUE, WED }
fun main() {
val d = Day.valueOf("TUE")
println(d)
}Использование перечислений в качестве параметров
Перечисления отлично подходят в качестве параметров функций: вызывающий код может передать только одну из допустимых констант.
enum class Level { LOW, HIGH }
fun setVolume(level: Level) {
println("Volume set to $level")
}
fun main() {
setVolume(Level.HIGH)
}Перечисления повышают читаемость
Код с выражением Direction.NORTH понятен сам по себе. По сравнению с магическими числами вроде 0 или 1 его назначение очевидно.
enum class Gear { PARK, DRIVE, REVERSE }
fun main() {
val current = Gear.DRIVE
println("Gear is $current")
}Реалистичный пример
Моделирование небольшого набора карточных мастей — идеальная задача для перечисления.
enum class Suit { HEARTS, DIAMONDS, CLUBS, SPADES }
fun main() {
for (suit in Suit.values()) {
println(suit)
}
}Перечисления с одной константой
Даже одна константа допустима; так часто моделируют гарантированно единственное значение (простой аналог одиночного объекта).
enum class AppMode { PRODUCTION }
fun main() {
println(AppMode.PRODUCTION)
}Быстрая проверка
Проверьте, насколько Вы поняли определение перечислений.
Повторение
Вы научились определять перечисления:
enum classобъявляет фиксированный набор именованных констант.- Каждая константа является единственным экземпляром, доступным через имя перечисления.
nameиvalueOf()связывают константы со строками.- Перечисления предотвращают недопустимые значения во время компиляции.
enum class Direction { NORTH, SOUTH, EAST, WEST }
fun main() {
println(Direction.valueOf("EAST").name)
}Часто задаваемые вопросы
Урок «Определение перечислений» бесплатный?
Да — полный текст урока «Определение перечислений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Определение перечислений»?
Наборы именованных констант Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Определение перечислений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение перечислений
- Свойства и методы перечислений
- Перечисления с when
- Значения и порядковые номера перечислений