Sobes.tech
Middle

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