Sobes.tech
Junior

Paaiškinkite, kaip naudoti 'with' ir 'let' funkcijas Kotlin.

sobes.tech AI

Atsakymas iš AI

with ir let yra standartinės Kotlin bibliotekos funkcijos, skirtos patogesniam darbui su objektais, ypač atliekant kelias operacijas su tuo pačiu objektu.

with

  • with priima objektą (gavėją) ir lambda kaip argumentus.
  • Lambda viduje this nurodo į gavėją.
  • Grąžina paskutinio išraiškos rezultatus.
// Pavyzdys naudojant `with`
class Person(var name: String, var age: Int)

fun main() {
    val person = Person("Alice", 30)

    val description = with(person) {
        // `this` nurodo į `person`
        this.age += 1 // galima praleisti `this`
        "Name: $name, New age: $age" // ši eilutė grąžinama
    }

    println(description) // Išvestis: Name: Alice, New age: 31
}

Naudojama, kai reikia atlikti kelias operacijas su vienu objektu be būtinybės grąžinti patį objektą. Tinka objektų konfigūravimui.

let

  • let yra iškviečiama ant objekto (gavėjo) kaip išplėtimo funkcija ir priima lambda.
  • Lambda viduje it arba naudotojo pavadinimas nurodo į gavėją.
  • Grąžina paskutinio išraiškos rezultatą.
// Pavyzdys naudojant `let`
fun main() {
    val name: String? = "Bob"

    val length = name?.let {
        // `it` nurodo į `name`
        println("The name is not null: $it")
        it.length // grąžina eilutės ilgį
    }

    println("Length: $length") // Išvestis: The name is not null: Bob, Length: 3

    val nullName: String? = null
    val lengthOfNull = nullName?.let {
        // šis blokas nebus vykdomas, nes nullName == null
        it.length
    }

    println("Length of null: $lengthOfNull") // Išvestis: Length of null: null
}

Naudojama, kai reikia atlikti operacijas su ne-null objektu (dažnai kartu su ?. saugumo operatoriumi) arba įvesti naują matomumo sritį su vietine kintamąja objekto (it).

Pagrindiniai skirtumai:

  • Kvietimo būdas: with kviečiamas kaip funkcija, let kaip išplėtimo funkcija.
  • Kintamasis lambda viduje: with naudoja this, let naudoja it.
  • Pradinis tikslas: with dažniausiai naudojamas objekto konfigūravimui, let dažniau naudojamas operacijoms su potencialiai null objektais ir vietinių matomumo sričių kūrimui.
with let
Kvietimas Funkcija: with(object) { ... } Išplėtimo funkcija: object.let { ... }
Nuoroda this it (arba naudotojo pavadinimas)
Grąžina Paskutinio išraiškos rezultatas lambda viduje Paskutinio išraiškos rezultatas lambda viduje
Pagrindinis naudojimas Objekto konfigūracija, operacijų grupavimas Null patikra (?.let), vietinė matomumo sritis