Kotlin Academy · Lektion

Säkra anrop och Elvis

Operatorerna ?. och ?:

Lektion 2 av 413 steg

Säkra anrop och Elvis är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 2 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.

Arbeta smidigt med nullbara värden

Att skriva if (x != null) överallt blir omständligt. Kotlin erbjuder två kortfattade operatorer för nullbara värden:

  • den säkra anropsoperatorn ?.
  • Elvis-operatorn ?:

Den säkra anropsoperatorn

Den säkra anropsoperatorn ?. anropar en metod eller läser en property endast om värdet inte är null. Annars blir hela uttrycket null.

Ingen krasch och ingen explicit kontroll behövs.

fun main() {
    val name: String? = "Kotlin"
    println(name?.length)
}

Säkert anrop på null

När mottagaren är null avbryts det säkra anropet direkt och returnerar null i stället för att kasta ett undantag.

Detta är den viktigaste skillnaden jämfört med ett vanligt punktanrop.

fun main() {
    val name: String? = null
    println(name?.length)
}

Kedja säkra anrop

Säkra anrop kan kedjas. Om någon länk i kedjan är null blir hela resultatet null.

Det gör djupt nästlade nullkontroller onödiga.

fun main() {
    val text: String? = "hello world"
    val result = text?.uppercase()?.substring(0, 5)
    println(result)
}

Elvis-operatorn

Elvis-operatorn ?: tillhandahåller ett reservvärde när vänstersidan är null.

Du kan läsa den som: använd värdet till vänster, annars värdet till höger.

fun main() {
    val name: String? = null
    val display = name ?: "Guest"
    println(display)
}

Elvis med ett faktiskt värde

Om vänstersidan inte är null returnerar Elvis-operatorn helt enkelt det värdet och ignorerar reserven.

Reservvärdet används endast när värdet saknas.

fun main() {
    val name: String? = "Sam"
    val display = name ?: "Guest"
    println(display)
}

Kombinera säkert anrop och Elvis

De här operatorerna används ofta tillsammans. Ett säkert anrop kan ge null, och Elvis tillhandahåller ett standardvärde.

Detta är ett av de vanligaste Kotlin-idiomen.

fun main() {
    val name: String? = null
    val length = name?.length ?: 0
    println(length)
}

Elvis för tidig retur

Högersidan av Elvis kan vara return eller throw. Det är ett smidigt sätt att avsluta tidigt när ett värde saknas.

Om id är null returnerar funktionen omedelbart.

fun process(id: String?) {
    val safeId = id ?: return
    println("Processing " + safeId)
}

fun main() {
    process("A-100")
    process(null)
    println("done")
}

Säkert anrop med let

Kombinera ?. med let för att köra ett block endast när värdet inte är null.

Inuti blocket hänvisar it till det icke-nullbara värdet.

fun main() {
    val name: String? = "Kotlin"
    name?.let {
        println("Length is " + it.length)
    }
}

Standardvärden för tal med Elvis

Elvis är användbar för att omvandla nullbara tal till säkra standardvärden före aritmetiska beräkningar.

Här blir ett nullbart antal 0, så att beräkningen alltid fungerar.

fun main() {
    val count: Int? = null
    val total = (count ?: 0) + 5
    println(total)
}

Sätta ihop delarna

Tillsammans ersätter de här operatorerna omständliga nullkontroller:

  • ?. anropar endast när värdet inte är null
  • ?: tillhandahåller ett reservvärde när värdet är null
  • Kedjor och let gör komplexa flöden kortfattade
fun main() {
    val input: String? = null
    val name = input?.trim()?.uppercase() ?: "UNKNOWN"
    println(name)
}

Snabbkontroll

Testa er förståelse av säkra anrop och Elvis.

Sammanfattning

Ni har lärt er de två viktigaste operatorerna för nullbarhet:

  • Säkert anrop ?. returnerar null i stället för att orsaka en krasch
  • Elvis ?: anger ett reservvärde
  • De kombineras smidigt med let och tidiga returer

Härnäst får ni se operatorn !! och varför den bör användas med försiktighet.

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 ”Säkra anrop och Elvis” gratis?

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

Operatorerna ?. och ?: 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 2 av 4.

Hur lång tid tar lektionen ”Säkra anrop och Elvis”?

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. Nullable- och non-null-typer
  2. Säkra anrop och Elvis
  3. Operatorn !!
  4. Plattformstyper
← Tillbaka till Kotlin Academy