let, also en scopefuncties
Werk met nullable waarden.
let, also en scopefuncties is een gratis Android Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.
Wat zijn scopefuncties
Met scopefuncties kunt je een codeblok uitvoeren in de context van een object. Ze maken code beknopter, vooral bij nullable waarden.
In deze les ligt de nadruk op let en also, de twee nuttigste functies voor nullveiligheid, en op hun relatie met de veilige-aanroepoperator.
De functie let
let voert een blok uit en geeft het object door als it. De functie retourneert wat het blok retourneert.
Dit is handig om een waarde om te zetten of een tijdelijke naam binnen een bepaald bereik te gebruiken.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let voor nullveiligheid
Combineer ?. met let om een blok alleen uit te voeren wanneer een waarde niet null is. Het blok wordt één keer uitgevoerd, met de waarde als it.
Als de waarde null is, wordt het blok volledig overgeslagen.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Overgeslagen bij null
Wanneer de ontvanger null is, doet ?.let niets. Het blok wordt nooit uitgevoerd.
Dit programma drukt niets af omdat name null is.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}it een andere naam geven
Je kunt de parameter een duidelijkere naam geven in plaats van it. Dit verbetert de leesbaarheid in langere blokken.
Gebruik een pijl om de naam expliciet op te geven.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}De functie also
also geeft het object ook door als it, maar retourneert het oorspronkelijke object in plaats van het resultaat van het blok.
Dit is ideaal voor neveneffecten, zoals logging, terwijl de waarde in een keten ongewijzigd blijft.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}Retourwaarde van let versus also
Het belangrijkste verschil: let retourneert het resultaat van het blok, terwijl also het oorspronkelijke object retourneert.
Kies let om een waarde om te zetten en also om de waarde te bekijken zonder deze te wijzigen.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also voor logging
Omdat also het object retourneert, past het in een keten om een waarde halverwege de verwerking te bekijken.
Hier loggen we een nullable waarde alleen als die aanwezig is, waarna we de waarde blijven gebruiken.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let met Elvis
Combineer ?.let met de Elvis-operator om een alternatief te bieden wanneer de waarde null is.
Het blok produceert een resultaat wanneer de waarde aanwezig is; de Elvis-kant handelt het null-geval af.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Een scopefunctie kiezen
Kies voor nullveiligheid let wanneer je een niet-nullwaarde in een blok wilt omzetten of gebruiken. Kies also wanneer je een neveneffect wilt uitvoeren maar het oorspronkelijke object moet behouden.
Beide functies werken natuurlijk samen met de veilige-aanroepoperator om crashes door null te voorkomen.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userEen gecombineerd voorbeeld
Dit programma gebruikt ?.let om een bericht op te bouwen en Elvis om terug te vallen op een alternatief. Het laat het alledaagse patroon van nullveilige Kotlin zien.
Er komen geen expliciete nullcontroles in voor, maar de code is volledig veilig.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Korte controle
Test je begrip van let en also.
Samenvatting
Scopefuncties voeren een blok uit in de context van een object. let geeft het object door als it en retourneert het resultaat van het blok; also geeft it door en retourneert het oorspronkelijke object.
Met ?.let werk je alleen met een waarde wanneer die niet null is. Vervolgens combineer je deze ideeën om NullPointerExceptions volledig te voorkomen.
Leer Kotlin met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 36
- Lessen
- 152
Veelgestelde vragen
Is de les “let, also en scopefuncties” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “let, also en scopefuncties”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.
Wat leer ik in “let, also en scopefuncties”?
Werk met nullable waarden. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Android Academy te beginnen?
Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “let, also en scopefuncties”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Android Academy?
Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Nullable versus non-nulltypen
- Veilige aanroepen en Elvis
- let, also en scopefuncties
- NullPointerExceptions voorkomen