Sobes.tech
Middle

Aký je rozdiel medzi rozširujúcimi funkciami let, run, also a apply v Kotlin?

sobes.tech AI

Odpoveď od AI

let: Zavolá uzáver na objekte a vráti výsledok uzáveru. Umožňuje použiť objekt ako argument v lambda výraze (it). Vhodné pre prácu s nullable objektmi.

// Príklad použitia let
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - nie-null String
    it.length
}

run: Spustí blok kódu na objekte a vráti výsledok bloku. Vo vnútri bloku je objekt dostupný ako this. Užitočné pre inicializáciu a volanie metód.

// Príklad použitia run
val result = buildString {
    // this - StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - String
    uppercase()
}

also: Zavolá uzáver na objekte a vráti samotný objekt. Umožňuje vykonávať ďalšie akcie (napríklad logovanie alebo konfiguráciu) na objekte bez jeho zmeny.

// Príklad použitia also
val list = mutableListOf("a", "b", "c").also {
    // it - MutableList
    println("Zoznam vytvorený: $it")
}

apply: Zavolá uzáver na objekte a vráti samotný objekt. Vo vnútri bloku je objekt dostupný ako this. Užitočné na nastavenie vlastností objektu.

// Príklad použitia apply
val textView = TextView(context).apply {
    // this - TextView
    text = "Ahoj, svet!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Hlavné rozdiely:

Funkcia Ako je dostupný objekt Čo vracia Typické použitie
let it Výsledok lambda Nullable objekty, transformácia
run this Výsledok lambda Inicializácia a volanie metód
also it Objekt sám Dodatočné akcie (bočné efekty)
apply this Objekt sám Nastavenie vlastností