0Pricing
Kotlin Academy · Урок

Определение перечислений

Наборы именованных констант

«Определение перечислений» — бесплатный урок 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 — локальная установка не требуется.

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

  1. Определение перечислений
  2. Свойства и методы перечислений
  3. Перечисления с when
  4. Значения и порядковые номера перечислений
← Назад к Kotlin Academy