Sikre kall og Elvis
?.- og ?:-operatorene.
Sikre kall og Elvis er en gratis leksjon i Android Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Android Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Android Academy inneholder totalt 4 leksjoner.
Mer enn if-sjekker
Det fungerer å sjekke hver nullable verdi med en if, men koden blir raskt omstendelig. Kotlin tilbyr kompakte operatorer som er laget for null-håndtering.
Denne leksjonen dekker safe call-operatoren ?. og Elvis-operatoren ?:, to verktøy De kommer til å bruke hele tiden.
Safe call-operatoren
Operatoren ?. kaller en metode bare hvis verdien ikke er null. Hvis den er null, evalueres hele uttrykket til null i stedet for å krasje.
Det er en trygg kortform for mønsteret «hvis ikke null».
fun main() {
val name: String? = "Coddy"
println(name?.length)
}Safe call på null
Når mottakeren er null, avslutter safe call-operasjonen kjeden og returnerer null. Det oppstår ikke noe unntak.
Her blir resultatet som skrives ut, ordet null, ikke en krasj.
fun main() {
val name: String? = null
println(name?.length) // prints: null
}Kjede safe calls
De kan kjede ?. over flere trinn. Hvis et ledd er null, stopper hele kjeden og gir null.
Dette passer perfekt når De skal navigere i nestede valgfrie data.
class Address(val city: String?)
class User(val address: Address?)
fun cityOf(u: User?): String? {
return u?.address?.city
}Elvis-operatoren
Elvis-operatoren ?: angir en reserveverdi når venstresiden er null. Den har fått navn etter frisyren til sangeren Elvis, som symbolet ligner på.
Les den slik: bruk verdien til venstre, ellers verdien til høyre.
fun main() {
val name: String? = null
val shown = name ?: "Guest"
println(shown) // prints: Guest
}Elvis med safe calls
Safe call og Elvis fungerer svært godt sammen. Bruk ?. for å navigere i en verdi, og ?: for å angi en standardverdi hvis noe var null.
Dette mønsteret gjør et nullable resultat om til et garantert ikke-null-resultat.
fun main() {
val name: String? = null
val len: Int = name?.length ?: 0
println(len) // prints: 0
}Eksempel med standardlengde
Her er resultattypen en vanlig Int, ikke Int?. Elvis-operatoren fjernet nullbarheten.
Etter ?: med en ikke-null-reserveverdi vet kompilatoren at verdien aldri kan være null.
val title: String? = "Kotlin"
val length: Int = title?.length ?: 0
// length is a non-null IntElvis for tidlig retur
Fordi return og throw er uttrykk i Kotlin, kan De plassere dem til høyre for Elvis.
Dette er en ryddig måte å avslutte tidlig på når en nødvendig verdi mangler.
fun process(input: String?) {
val text = input ?: return
println(text.uppercase())
}Safe call med let
Kombiner ?. med let for å kjøre en blokk bare når verdien ikke er null. Inne i blokken er verdien ikke-null og har navnet it.
Dette er et vanlig idiom for å arbeide med valgfrie verdier.
fun main() {
val email: String? = "a@b.com"
email?.let {
println("Sending to " + it)
}
}Sette alt sammen
Et kort program kan vise hvordan safe call og Elvis samarbeider om å lage en vennlig melding.
Legg merke til at det ikke trengs noen if-setning, samtidig som koden aldri risikerer en null-krasj.
fun main() {
val nickname: String? = null
val display = nickname?.uppercase() ?: "ANONYMOUS"
println(display)
}Når skal De bruke hva?
Bruk ?. når De vil at et null-resultat skal flyte gjennom uten problemer. Bruk ?: når De vil erstatte null med en konkret standardverdi.
Sammen dekker de aller fleste dagligdagse tilfeller av null-håndtering uten omstendelige sjekker.
val count = list?.size ?: 0
// safe call reads size, Elvis defaults to 0Hurtigsjekk
Test forståelsen Deres av safe calls og Elvis-operatoren.
Oppsummering
Safe call ?. kaller et medlem bare hvis mottakeren ikke er null, og gir ellers null. Elvis-operatoren ?: erstatter null med en reserveverdi.
Ved å kjede dem sammen fjernes nullbarheten på en ryddig måte. Deretter skal De utforske scope-funksjoner som let og also mer i dybden.
Lær deg Kotlin med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 36
- Leksjoner
- 152
Ofte stilte spørsmål
Er leksjonen «Sikre kall og Elvis» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Android Academy, inkludert «Sikre kall og Elvis», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Android Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Sikre kall og Elvis»?
?.- og ?:-operatorene. Du øver på Android Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Android Academy?
Ingen tidligere erfaring er nødvendig. Android Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Sikre kall og Elvis»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Android Academy-leksjonen?
Ja. Alle Android Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Nullable kontra ikke-null-typer
- Sikre kall og Elvis
- let, also og scope-funksjoner
- Unngå NullPointerExceptions