Sobes.tech
Middle

Kāda ir atšķirība starp paplašināšanas funkcijām let, run, also un apply Kotlin?

sobes.tech AI

Atbilde no AI

let: Izsauc slēgumu uz objektu un atgriež slēguma rezultātu. Ļauj izmantot objektu kā lambda izteiksmes argumentu (it). Piemērots darbam ar nullable objektiem.

// Piemērs, izmantojot let
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - tas ir ne-null String
    it.length
}

run: Izpilda koda bloku uz objekta un atgriež bloka rezultātu. Bloka iekšpusē objekts ir pieejams kā this. Noder objekta inicializācijai un metožu izsaukšanai.

// Piemērs, izmantojot run
val result = buildString {
    // this - tas ir StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - tas ir String
    uppercase()
}

also: Izsauc slēgumu uz objektu un atgriež pašu objektu. Atļauj veikt papildu darbības (piemēram, žurnālu vai konfigurāciju) bez objekta izmaiņām.

// Piemērs, izmantojot also
val list = mutableListOf("a", "b", "c").also {
    // it - tas ir MutableList
    println("Izveidots saraksts: $it")
}

apply: Izsauc slēgumu uz objektu un atgriež pašu objektu. Bloka iekšpusē objekts ir pieejams kā this. Ērti konfigurēt objekta īpašības.

// Piemērs, izmantojot apply
val textView = TextView(context).apply {
    // this - tas ir TextView
    text = "Sveiki, pasaule!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Galvenās atšķirības:

Funkcija Kā ir pieejams objekts Ko atgriež Tipiska pielietojuma joma
let it Lambda rezultāts Nullable objekti, transformācija
run this Lambda rezultāts Objektu inicializācija un metožu izsaukšana
also it Pats objekts Papildu darbības (Side effects)
apply this Pats objekts Objektu īpašību konfigurācija