Kotlin Academy · Lektion

Operatorerna is och as

Typkontroller och typomvandlingar

Lektion 3 av 413 steg

Operatorerna is och as är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 3 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.

Kontrollera och casta typer

Kotlin erbjuder två operatorer för att arbeta med typer vid körning:

  • is kontrollerar om ett värde har en viss typ
  • as castar ett värde till en viss typ

Båda har säkra varianter som ni får lära er här.

Operatorn is

is returnerar ett booleskt värde som anger om ett värde matchar en typ.

Den ligger till grund för smart casts.

fun main() {
    val x: Any = "hello"
    println(x is String)
    println(x is Int)
}

Negerad kontroll med !is

Använd !is för att kontrollera att ett värde INTE har en viss typ.

Detta blir naturligt i skyddsvillkor.

fun main() {
    val x: Any = 42
    if (x !is String) {
        println("not a string")
    }
}

Operatorn as

as utför en explicit castning. Om värdet verkligen har den typen får ni tillbaka det korrekt typat.

Använd den när kompilatorn inte själv kan härleda typen.

fun main() {
    val x: Any = "hello"
    val s = x as String
    println(s.length)
}

När as misslyckas

Om värdet inte har måltypen kastar as ett ClassCastException.

Detta är den osäkra varianten, så använd den bara när ni är säkra.

fun main() {
    val x: Any = 42
    try {
        val s = x as String
        println(s)
    } catch (e: ClassCastException) {
        println("Cannot cast Int to String")
    }
}

Den säkra castningen as?

as? är den säkra castningen. Den returnerar värdet castat till typen eller null om castningen inte är möjlig.

Inget undantag kastas.

fun main() {
    val x: Any = 42
    val s = x as? String
    println(s)
}

Säker castning med Elvis

Kombinera as? med Elvis för att ange ett reservvärde när castningen misslyckas.

Detta är ett tydligt mönster som inte kraschar.

fun main() {
    val x: Any = 42
    val s = (x as? String) ?: "default"
    println(s)
}

is styr smart casts

Efter en is-kontroll behöver ni vanligtvis inte as alls, eftersom smart casts aktiveras.

Använd explicit as endast när smart casting inte kan tillämpas.

fun main() {
    val x: Any = "smart"
    if (x is String) {
        println(x.uppercase()) // smart cast, no as needed
    }
}

Castning i samlingar

Säkra castningar är användbara när ni filtrerar blandade samlingar.

filterIsInstance använder is internt för att behålla endast matchande element.

fun main() {
    val items: List<Any> = listOf(1, "two", 3, "four")
    val strings = items.filterIsInstance<String>()
    println(strings)
}

Välj rätt operator

En enkel vägledning:

  • Behöver ni ett booleskt värde? använd is
  • Är ni säkra på typen? använd as
  • Är ni osäkra? använd as? med ett reservvärde
fun describe(x: Any): String {
    val text = x as? String ?: return "not text"
    return "text of length " + text.length
}

fun main() {
    println(describe("hello"))
    println(describe(99))
}

Knyta ihop det

Typoperatorerna ger er full kontroll:

  • is / !is kontrollerar typer
  • as castar men kan kasta ett undantag
  • as? castar säkert och returnerar null vid misslyckande
fun main() {
    val values: List<Any> = listOf(1, "hi", 2.5)
    for (v in values) {
        when {
            v is Int -> println("int " + v)
            v is String -> println("string " + v)
            else -> println("other")
        }
    }
}

Snabbtest

Testa era kunskaper om is och as.

Repetition

Ni har lärt er om typoperatorerna:

  • is och !is för typkontroller
  • as för castningar som kan kasta undantag
  • as? för säkra castningar som returnerar null

Härnäst gör ni when uttömmande så att alla fall täcks.

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 ”Operatorerna is och as” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Operatorerna is och as”, 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 ”Operatorerna is och as”?

Typkontroller och typomvandlingar 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 3 av 4.

Hur lång tid tar lektionen ”Operatorerna is och as”?

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. when som uttryck
  2. Smarta typomvandlingar
  3. Operatorerna is och as
  4. Fullständig when
← Tillbaka till Kotlin Academy