Mi a különbség a let, run, also és apply kiterjesztési függvények között Kotlinban?
sobes.tech MI
Válasz az MI-től
let: Meghív egy lezárást egy objektumon, és visszaadja a lezárás eredményét. Lehetővé teszi az objektum használatát argumentumként lambda kifejezésben (it). Hasznos nullable objektumokkal való munkához.
// let példa
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - nem-null String
it.length
}
run: Végrehajt egy kódrészt egy objektumon, és visszaadja a blokk eredményét. A blokkban az objektum elérhető this-ként. Hasznos az objektum inicializálásához és metódushívásokhoz.
// run példa
val result = buildString {
// this - StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - String
uppercase()
}
also: Meghív egy lezárást egy objektumon, és visszaadja az objektumot. Lehetővé teszi további műveletek végrehajtását (pl. naplózás vagy konfiguráció) az objektumon anélkül, hogy módosítaná.
// also példa
val list = mutableListOf("a", "b", "c").also {
// it - MutableList
println("Lista létrehozva: $it")
}
apply: Meghív egy lezárást egy objektumon, és visszaadja az objektumot. A blokkban az objektum this-ként érhető el. Hasznos az objektum tulajdonságainak beállításához.
// apply példa
val textView = TextView(context).apply {
// this - TextView
text = "Helló, világ!"
textSize = 16f
setTextColor(Color.BLACK)
}
Fő különbségek:
| Funkció | Hogyan érhető el az objektum | Mit ad vissza | Tipikus alkalmazás |
|---|---|---|---|
let |
it |
Lambda eredménye | Nullable objektumok, transzformáció |
run |
this |
Lambda eredménye | Objektum inicializálás és metódushívás |
also |
it |
Az objektum maga | További műveletek (oldalsó hatások) |
apply |
this |
Az objektum maga | Tulajdonságok beállítása |