Kotlin Academy · Lektion

Enum-värden och ordinaler

Iterera och indexera

Lektion 4 av 413 steg

Enum-värden och ordinaler är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Lista alla konstanter

Den genererade funktionen values() returnerar en array med alla konstanter i deklarationsordning.

enum class Suit { HEARTS, CLUBS }

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

entries i stället för values()

I modern Kotlin föredras entries, som returnerar en oföränderlig lista och undviker att skapa en ny array vid varje anrop.

enum class Suit { HEARTS, CLUBS }

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

Egenskapen ordinal

Varje konstant har en ordinal: dess nollbaserade position i deklarationsordningen.

enum class Size { S, M, L }

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

Räkna konstanter

Använd entries.size för att räkna hur många konstanter som finns.

enum class Day { MON, TUE, WED }

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

Iterera med index

Kombinera ordinaler eller index för att numrera varje konstant.

enum class Color { RED, GREEN, BLUE }

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

Sammanfattning av valueOf och name

Kombinera valueOf() (sträng till konstant) med name (konstant till sträng) för konvertering fram och tillbaka.

enum class Status { ON, OFF }

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

Avbilda över konstanter

Eftersom entries är en lista kan Ni använda samlingsfunktioner som map.

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

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

Hitta utifrån en egenskap

Sök bland konstanter med first eller find utifrån en egenskap.

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

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

Ordinaler är känsliga

Undvik att lagra värden från ordinal under lång tid. Om Ni ändrar konstantérnas ordning ändras ordinalerna, vilket förstör sparade data. Lagra i stället name.

enum class Level { LOW, HIGH }

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

Nästa konstant med ordinal

Ni kan navigera mellan konstanter med hjälp av ordinaler och listan 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))
}

Sätta ihop delarna

Sammanfatta en enum genom att iterera och läsa både name och ordinal.

enum class Planet { MERCURY, VENUS, EARTH }

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

Snabb kontroll

Testa hur väl Ni förstår enumvärden och ordinaler.

Sammanfattning

Ni har lärt Er att räkna upp och indexera konstanter:

  • entries (rekommenderas) och values() listar alla konstanter.
  • ordinal är den nollbaserade positionen i deklarationen.
  • entries är en lista, så samlingsfunktioner fungerar.
  • Föredra att lagra name framför ordinal för långsiktig hållbarhet.
enum class Size { S, M, L }

fun main() {
    println(Size.entries.size)
    println(Size.M.ordinal)
}
Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
51
Lektioner
203

Vanliga frågor

Är lektionen ”Enum-värden och ordinaler” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Enum-värden och ordinaler”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Enum-värden och ordinaler”?

Iterera och indexera Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?

Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Enum-värden och ordinaler”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?

Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Definiera enum-typer
  2. Egenskaper och metoder i enum-typer
  3. Enum-typer med when
  4. Enum-värden och ordinaler
← Tillbaka till Kotlin Academy