Kotlin Academy · Oppitunti

let, also ja run nullable-vastaanottimilla

Käyttäkää scope-funktioita suorittamaan koodia vain, kun arvo ei ole null.

Oppitunti 3/413 vaihetta

let, also ja run nullable-vastaanottimilla on ilmainen Kotlin 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 Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Näkyvyysaluefunktiot ja nullable-arvot

Näkyvyysaluefunktiot let, also ja run toimivat erinomaisesti yhdessä turvallisen kutsun ?. kanssa, jolloin lohko suoritetaan vain, kun vastaanottaja ei ole null.

let turvallisen kutsun kanssa

obj?.let { ... } suorittaa lohkon vain, jos obj ei ole null. Lohkon sisällä it viittaa ei-null-arvoon.

fun main() {
    val name: String? = "Kotlin"
    name?.let {
        println("Length: ${it.length}")
        println("Upper: ${it.uppercase()}")
    }
}

let ohittaa lohkon null-arvon tapauksessa

Jos vastaanottaja on null, koko let-lohko ohitetaan.

fun main() {
    val name: String? = null
    val result = name?.let {
        println("never printed")
        it.length
    }
    println(result) // null
}

let palauttaa arvon

let palauttaa lohkonsa viimeisen lausekkeen, joten sen voi ketjuttaa Elvis-operaattoriin oletusarvojen käyttämiseksi.

fun main() {
    val raw: String? = "  hello "
    val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
    println(cleaned) // HELLO
}

also sivuvaikutuksia varten

also suorittaa lohkon sivuvaikutuksia varten ja palauttaa alkuperäisen vastaanottajan. Se sopii erinomaisesti lokitukseen ketjutuksen aikana.

fun main() {
    val name: String? = "Alice"
    val len = name?.also { println("Processing: $it") }?.length
    println("len = $len")
}

also säilyttää arvon

Toisin kuin let, also palauttaa vastaanottajan muuttumattomana. Käyttäkää sitä, kun haluatte tarkastella arvoa ilman muuntamista.

fun main() {
    val items: List<Int>? = listOf(1, 2, 3)
    items?.also { println("Got list of size ${it.size}") }
           ?.forEach { println(it) }
}

run turvallisen kutsun kanssa

obj?.run { ... } suorittaa lohkon siten, että this viittaa vastaanottajaan. Käyttäkää sitä, kun haluatte käyttää jäseniä ilman it.-etuliitettä.

fun main() {
    val name: String? = "Kotlin"
    val info = name?.run {
        "len=$length upper=${uppercase()}"
    }
    println(info)
}

let verrattuna run-funktioon

let käyttää arvoa it (lambdan argumentti), kun taas run käyttää arvoa this (vastaanottaja). Valitkaa se, joka on luettavampi.

class User(val name: String, val age: Int)
fun main() {
    val user: User? = User("Ada", 35)
    user?.let { "${it.name} age ${it.age}" }.also(::println)
    user?.run { "$name age $age" }.also(::println)
}

Useiden näkyvyysalueiden ketjuttaminen

Ketjuttakaa näkyvyysaluefunktioita tietoputkessa vaiheittaista muuntamista ja lokitusta varten.

fun main() {
    val raw: String? = "  hello  "
    val result = raw
        ?.also { println("raw: '$it'") }
        ?.let { it.trim() }
        ?.also { println("trimmed: '$it'") }
        ?.uppercase()
    println(result) // HELLO
}

let takeIf-funktion kanssa

Yhdistämällä takeIf-funktio (suodatus) ja let voitte suorittaa toiminnon predikaatin perusteella.

fun main() {
    val name: String? = "Kotlin"
    name?.takeIf { it.length > 3 }
        ?.let { println("Long name: $it") }
}

Vastaesimerkki: sisäkkäiset if-lauseet

Ennen näkyvyysaluefunktioita:

fun main() {
    val name: String? = "Alice"
    // OLD WAY:
    if (name != null) {
        val upper = name.uppercase()
        println(upper)
    }
    // NEW WAY:
    name?.let { println(it.uppercase()) }
}

Pikakoe

Mikä näkyvyysaluefunktio palauttaa vastaanottajan muuttumattomana ja on tarkoitettu pääasiassa sivuvaikutuksiin?

Kertaus

Yhdistäkää ?. funktioon let (lohko palauttaa arvon ja käyttää it-parametria), funktioon run (lohko palauttaa arvon ja käyttää this-vastaanottajaa) tai funktioon also (palauttaa vastaanottajan ja on tarkoitettu sivuvaikutuksiin). Kaikki ohittavat suorituksen, jos vastaanottaja on null.

Aloita maksutta

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
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”let, also ja run nullable-vastaanottimilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “let, also ja run nullable-vastaanottimilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”let, also ja run nullable-vastaanottimilla”?

Käyttäkää scope-funktioita suorittamaan koodia vain, kun arvo ei ole null. Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin 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 run nullable-vastaanottimilla”-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ä Kotlin Academy-oppitunnilla?

Kyllä. Jokainen Kotlin 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

  1. Nullable-tyypit ja ?-muunnin
  2. Turvallinen kutsu ?. ja Elvis ?: käytännön koodissa
  3. let, also ja run nullable-vastaanottimilla
  4. !!-operaattori: milloin ja miksi sitä kannattaa välttää
← Takaisin: Kotlin Academy