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í |