let, also ja scope-funktiot
Käsitelkää nullable-arvoja.
let, also ja scope-funktiot on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä scope-funktiot ovat?
Scope-funktioilla voit suorittaa koodilohkon olion kontekstissa. Ne tekevät koodista tiiviimpää erityisesti nullable-arvojen käsittelyssä.
Tässä oppitunnissa keskitytään funktioihin let ja also, jotka ovat hyödyllisimpiä null-turvallisuudessa, sekä niiden suhteeseen safe call -operaattoriin.
let-funktio
let suorittaa lohkon ja välittää olion siihen nimellä it. Se palauttaa kaiken, minkä lohko palauttaa.
Se on kätevä arvon muuntamiseen tai väliaikaisen nimen rajaamiseen tiettyyn näkyvyysalueeseen.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let null-turvallisuudessa
Yhdistämällä ?.-operaattorin ja let-funktion voit suorittaa lohkon vain, kun arvo ei ole null. Lohko suoritetaan kerran niin, että arvo on käytettävissä nimellä it.
Jos arvo on null, lohko ohitetaan kokonaan.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Ohitetaan null-arvolla
Kun vastaanottaja on null, ?.let ei tee mitään. Lohkoa ei suoriteta koskaan.
Tämä ohjelma ei tulosta mitään, koska name on null.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}it-nimen vaihtaminen
Voit antaa parametrille kuvaavamman nimen it-nimen sijaan. Tämä parantaa luettavuutta pidemmissä lohkoissa.
Nimeä parametri eksplisiittisesti nuolimerkinnällä.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}also-funktio
also välittää niin ikään olion nimellä it, mutta palauttaa lohkon tuloksen sijaan alkuperäisen olion.
Se sopii erinomaisesti sivuvaikutuksiin, kuten lokitukseen, kun arvo halutaan pitää muuttumattomana ketjussa.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}let- ja also-funktioiden palautusarvot
Keskeinen ero on tämä: let palauttaa lohkon tuloksen, kun taas also palauttaa alkuperäisen olion.
Valitse let, kun haluat muuntaa arvon, ja also, kun haluat tarkastella sitä muuttamatta arvoa.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also lokitukseen
Koska also palauttaa olion, se sopii ketjuun arvon tarkastelemiseksi käsittelyn aikana.
Tässä nullable-arvo kirjataan lokiin vain, jos se on olemassa, minkä jälkeen sen käyttöä jatketaan.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let ja Elvis-operaattori
Yhdistä ?.let Elvis-operaattoriin, kun haluat tarjota vaihtoehdon null-arvolle.
Lohko tuottaa tuloksen, kun arvo on olemassa, ja Elvis-operaattorin toinen haara käsittelee null-tapauksen.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Scope-funktion valitseminen
Null-turvallisuudessa käytä let-funktiota, kun haluat muuntaa ei-null-arvoa tai käyttää sitä lohkossa. Käytä also-funktiota, kun haluat sivuvaikutuksen mutta säilyttää alkuperäisen olion.
Molemmat sopivat luontevasti yhteen safe call -operaattorin kanssa ja estävät null-arvojen aiheuttamat kaatumiset.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userYhdistetty esimerkki
Tämä ohjelma käyttää ?.let-funktiota viestin muodostamiseen ja Elvis-operaattoria varavaihtoehtoon. Se havainnollistaa null-turvallisen Kotlin-koodin tavallista käyttötapaa.
Eksplisiittisiä null-tarkistuksia ei tarvita, mutta koodi on silti täysin turvallista.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Pikatesti
Testaa, miten hyvin ymmärrät funktioiden let ja also toiminnan.
Kertaus
Scope-funktiot suorittavat lohkon olion kontekstissa. let välittää olion nimellä it ja palauttaa lohkon tuloksen, kun taas also välittää it-arvon ja palauttaa alkuperäisen olion.
?.let-funktion avulla käsittelet arvoa vain, kun se ei ole null. Seuraavaksi yhdistät nämä ideat, jotta voit välttää NullPointerException-poikkeukset kokonaan.
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”let, also ja scope-funktiot” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “let, also ja scope-funktiot”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”let, also ja scope-funktiot”?
Käsitelkää nullable-arvoja. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”let, also ja scope-funktiot”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?
Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Nullable- ja non-null-tyypit
- Turvalliset kutsut ja Elvis-operaattori
- let, also ja scope-funktiot
- NullPointerException-virheiden välttäminen