Säkra anrop och Elvis
Operatorerna ?. och ?:
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
letgö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
letoch tidiga returer
Härnäst får ni se operatorn !! och varför den bör användas med försiktighet.
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
- Nullable- och non-null-typer
- Säkra anrop och Elvis
- Operatorn !!
- Plattformstyper