let, also og scope-funksjoner
Arbeid med nullable verdier.
let, also og scope-funksjoner er en gratis leksjon i Android Academy på CoddyKit. Dette er leksjon 3 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.
Hva er scope-funksjoner
Scope-funksjoner lar deg kjøre en kodeblokk i konteksten til et objekt. De gjør koden mer konsis, spesielt når du arbeider med nullable verdier.
Denne leksjonen fokuserer på let og also, som er de to mest nyttige for null-sikkerhet, og på hvordan de henger sammen med safe call-operatoren.
Funksjonen let
let kjører en blokk og sender objektet inn som it. Den returnerer det blokken returnerer.
Den er nyttig når du vil transformere en verdi eller avgrense omfanget til et midlertidig navn.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let for null-sikkerhet
Kombiner ?. med let for å kjøre en blokk bare når en verdi ikke er null. Blokken kjøres én gang, med verdien som it.
Hvis verdien er null, hoppes blokken over i sin helhet.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Hoppes over når verdien er null
Når mottakeren er null, gjør ?.let ingenting. Blokken kjøres aldri.
Dette programmet skriver ikke ut noe fordi name er null.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}Gi it et annet navn
Du kan gi parameteren et tydeligere navn i stedet for it. Dette gjør lengre blokker enklere å lese.
Bruk en pil for å navngi den eksplisitt.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}Funksjonen also
also sender også objektet inn som it, men returnerer det opprinnelige objektet i stedet for resultatet fra blokken.
Den er utmerket for sideeffekter, som logging, samtidig som verdien forblir uendret i en kjede.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}Returverdien til let og also
Den viktigste forskjellen er at let returnerer resultatet fra blokken, mens also returnerer det opprinnelige objektet.
Velg let når du vil transformere, og also når du vil inspisere verdien uten å endre den.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also for logging
Fordi also returnerer objektet, kan den inngå i en kjede slik at du kan inspisere en verdi underveis.
Her logger vi en nullable verdi bare hvis den finnes, og fortsetter deretter å bruke den.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let med Elvis
Kombiner ?.let med Elvis-operatoren for å angi et alternativ når verdien er null.
Blokken produserer et resultat når verdien finnes, mens Elvis-delen håndterer tilfellet der den er null.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Velge en scope-funksjon
For null-sikkerhet velger du let når du vil transformere eller bruke en verdi som ikke er null, i en blokk. Velg also når du vil utføre en sideeffekt, men beholde det opprinnelige objektet.
Begge passer naturlig sammen med safe call-operatoren for å unngå krasj på grunn av null.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userEt kombinert eksempel
Dette programmet bruker ?.let til å bygge en melding og Elvis til å angi et alternativ. Det viser den vanlige arbeidsmåten for null-sikker Kotlin.
Det finnes ingen eksplisitte null-sjekker, men koden er likevel helt sikker.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Kunnskapssjekk
Test forståelsen din av let og also.
Oppsummering
Scope-funksjoner kjører en blokk i konteksten til et objekt. let sender objektet inn som it og returnerer resultatet fra blokken, mens also sender inn it og returnerer det opprinnelige objektet.
Med ?.let kan du utføre handlinger på en verdi bare når den ikke er null. Deretter skal du samle disse ideene for å unngå NullPointerExceptions helt.
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 «let, also og scope-funksjoner» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Android Academy, inkludert «let, also og scope-funksjoner», 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 «let, also og scope-funksjoner»?
Arbeid med nullable verdier. 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 3 av 4.
Hvor lang tid tar leksjonen «let, also og scope-funksjoner»?
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