Sobes.tech
Junior

Selgitage, kuidas kasutada 'with' ja 'let' funktsioone Kotlinis.

sobes.tech AI

Vastus AI-lt

with ja let on Kotlin standardraamatukogu funktsioonid, mis on mõeldud mugavamaks tööks objektidega, eriti kui tuleb teha mitu operatsiooni sama objekti peal.

with

  • with võtab objekti (saaja) ja lambda funktsiooni argumentidena.
  • Lambda sees viitab this saajale.
  • Tagastab viimase väljendi tulemuse.
// Näide `with` kasutamisest
class Person(var name: String, var age: Int)

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

    val description = with(person) {
        // `this` viitab `person`-ile
        this.age += 1 // võib jätta välja `this`
        "Name: $name, New age: $age" // see string tagastatakse
    }

    println(description) // Väljund: Name: Alice, New age: 31
}

Kasutatakse, kui on vaja teha mitu operatsiooni ühe objekti peal ilma objekti ise tagasi andmata. Sobib objektide konfiguratsiooniks.

let

  • let kutsutakse objekti peal (saaja) kui laiendatud funktsioon ja võtab argumentideks lambda.
  • Lambda sees viitab it või kasutaja määratud nimega objekti.
  • Tagastab viimase väljendi tulemuse.
// Näide `let` kasutamisest
fun main() {
    val name: String? = "Bob"

    val length = name?.let {
        // `it` viitab `name`-le
        println("The name is not null: $it")
        it.length // tagastab stringi pikkuse
    }

    println("Length: $length") // Väljund: The name is not null: Bob, Length: 3

    val nullName: String? = null
    val lengthOfNull = nullName?.let {
        // see plokk ei käivitu, kuna nullName == null
        it.length
    }

    println("Length of null: $lengthOfNull") // Väljund: Length of null: null
}

Kasutatakse, kui on vaja teha operatsioone mitte-null objekti peal (tihti koos ?. operaatoriga) või luua uus vaadeldavusala lokaalse muutujaga (it).

Peamised erinevused:

  • Kutsumise viis: with kutsutakse funktsioonina, let laiendatud funktsioonina.
  • Muuttuja lambda sees: with kasutab this, letit.
  • Algne eesmärk: with kasutatakse peamiselt objekti konfiguratsiooniks, let sageli null-objektide operatsioonideks ja lokaalse vaadeldavusala loomiseks.
with let
Kutsumine Funktsioon: with(object) { ... } Laiendatud funktsioon: object.let { ... }
Viide this it (või kasutaja määratud nimi)
Tagastab Viimase väljendi tulemus lambda sees Viimase väljendi tulemus lambda sees
Põhikasutus Objekti konfiguratsioon, operatsioonide grupeerimine Null kontroll (?.let), lokaalne vaadeldavusala