Middle
Jaký je rozdíl mezi rozšiřujícími funkcemi let, run, also a apply v Kotlinu?
sobes.tech AI
Odpověď od AI
let: Zavolá uzávěr na objektu a vrátí výsledek uzávěru. Umožňuje použít objekt jako argument v lambda výrazu (it). Vhodné pro práci s nullable objekty.
// Příklad použití let
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - není null String
it.length
}
run: Spustí blok kódu na objektu a vrátí výsledek bloku. Uvnitř bloku je objekt dostupný jako this. Užitečné pro inicializaci a volání metod.
// Příklad použití run
val result = buildString {
// this - StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - String
uppercase()
}
also: Zavolá uzávěr na objektu a vrátí samotný objekt. Umožňuje provádět další akce (například logování nebo konfiguraci) na objektu, aniž by ho měnila.
// Příklad použití also
val list = mutableListOf("a", "b", "c").also {
// it - MutableList
println("Seznam vytvořen: $it")
}
apply: Zavolá uzávěr na objektu a vrátí samotný objekt. Uvnitř bloku je objekt dostupný jako this. Užitečné pro nastavení vlastností objektu.
// Příklad použití apply
val textView = TextView(context).apply {
// this - TextView
text = "Ahoj, světe!"
textSize = 16f
setTextColor(Color.BLACK)
}
Hlavní rozdíly:
| Funkce | Jak je přístupný objekt | Co vrací | Typické použití |
|---|---|---|---|
let |
it |
Výsledek lambda | Nullable objekty, transformace |
run |
this |
Výsledek lambda | Inicializace a volání metod |
also |
it |
Samotný objekt | Další akce (vedlejší efekty) |
apply |
this |
Samotný objekt | Nastavení vlastností |