0Pricing
Kotlin Academy · Урок

Значения и порядковые номера перечислений

Перебирайте и индексируйте значения

«Значения и порядковые номера перечислений» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Перечисление всех констант

Сгенерированная функция values() возвращает массив всех констант в порядке их объявления.

enum class Suit { HEARTS, CLUBS }

fun main() {
    for (s in Suit.values()) println(s)
}

entries вместо values()

В современном Kotlin предпочтительнее использовать entries: он возвращает неизменяемый список и не создаёт новый массив при каждом вызове.

enum class Suit { HEARTS, CLUBS }

fun main() {
    for (s in Suit.entries) println(s)
}

Свойство порядкового номера

У каждой константы есть свой ordinal — её позиция, отсчитываемая от нуля, в порядке объявления.

enum class Size { S, M, L }

fun main() {
    println(Size.S.ordinal)
    println(Size.L.ordinal)
}

Подсчёт констант

Используйте entries.size, чтобы узнать количество существующих констант.

enum class Day { MON, TUE, WED }

fun main() {
    println(Day.entries.size)
}

Итерация с индексом

Объединяйте порядковые номера или индексы, чтобы пронумеровать каждую константу.

enum class Color { RED, GREEN, BLUE }

fun main() {
    for (c in Color.entries) {
        println("${c.ordinal}: $c")
    }
}

Повторение valueOf и имени

Сочетайте valueOf() (из строки в константу) с name (из константы в строку) для обратимого преобразования.

enum class Status { ON, OFF }

fun main() {
    val s = Status.valueOf("ON")
    println(s.name)
}

Преобразование всех констант

Поскольку entries является списком, можно использовать функции для коллекций, например map.

enum class Coin(val cents: Int) { PENNY(1), DIME(10) }

fun main() {
    val names = Coin.entries.map { it.name }
    println(names)
}

Поиск по свойству

Ищите константы с помощью first или find, проверяя свойство.

enum class Coin(val cents: Int) { PENNY(1), DIME(10) }

fun main() {
    val c = Coin.entries.first { it.cents == 10 }
    println(c)
}

Порядковые номера ненадёжны

Не сохраняйте значения ordinal надолго. Изменение порядка констант изменит их порядковые номера и повредит сохранённые данные. Вместо этого сохраняйте name.

enum class Level { LOW, HIGH }

fun main() {
    println(Level.HIGH.name)
}

Следующая константа по порядковому номеру

Перемещаться между константами можно с помощью порядковых номеров и списка entries.

enum class Gear { FIRST, SECOND, THIRD }

fun next(g: Gear): Gear {
    val all = Gear.entries
    return all[(g.ordinal + 1) % all.size]
}

fun main() {
    println(next(Gear.FIRST))
}

Собираем всё вместе

Суммируйте сведения о перечислении, перебирая константы и читая их name и ordinal.

enum class Planet { MERCURY, VENUS, EARTH }

fun main() {
    Planet.entries.forEach {
        println("${it.ordinal} -> ${it.name}")
    }
}

Быстрая проверка

Проверьте, насколько Вы поняли значения и порядковые номера констант перечисления.

Повторение

Вы научились перечислять константы и обращаться к ним по индексам:

  • entries (предпочтительный вариант) и values() перечисляют все константы.
  • ordinal — позиция константы в объявлении, отсчитываемая от нуля.
  • entries является списком, поэтому с ним работают функции для коллекций.
  • Для долговременного хранения предпочитайте name, а не ordinal.
enum class Size { S, M, L }

fun main() {
    println(Size.entries.size)
    println(Size.M.ordinal)
}

Часто задаваемые вопросы

Урок «Значения и порядковые номера перечислений» бесплатный?

Да — полный текст урока «Значения и порядковые номера перечислений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «Значения и порядковые номера перечислений»?

Перебирайте и индексируйте значения Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Значения и порядковые номера перечислений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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