Значения и порядковые номера перечислений
Перебирайте и индексируйте значения
«Значения и порядковые номера перечислений» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Определение перечислений
- Свойства и методы перечислений
- Перечисления с when
- Значения и порядковые номера перечислений