Android Academy · leksjon

Sikre kall og Elvis

?.- og ?:-operatorene.

Leksjon 2 av 413 trinn

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 Int

Elvis 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 0

Hurtigsjekk

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.

Gratis å komme i gang

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

  1. Nullable kontra ikke-null-typer
  2. Sikre kall og Elvis
  3. let, also og scope-funksjoner
  4. Unngå NullPointerExceptions
← Tilbake til Android Academy