Middle
Ποια είναι η διαφορά μεταξύ των λειτουργιών επέκτασης let, run, also και apply σε Kotlin;
sobes.tech AI
Απάντηση από AI
let: Zvača zaporko v obkjet in vrne rezultat zaporke. Omogoča uporabo objekta kot argumenta v lambda izrazu (it). Primeren za delo z nullable objekti.
// Primer uporabe let
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - ni-null String
it.length
}
run: Izvede blok kode na objektu in vrne rezultat bloka. Znotraj bloka je dostop do objekta kot this. Uporaben za inicializacijo in klicanje metod.
// Primer uporabe run
val result = buildString {
// this - StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - String
uppercase()
}
also: Pokliče zaporko na objektu in vrne sam objekt. Omogoča izvajanje dodatnih dejanj (npr. beleženje ali konfiguracijo) na objektu brez spreminjanja.
// Primer uporabe also
val list = mutableListOf("a", "b", "c").also {
// it - MutableList
println("Seznam ustvarjen: $it")
}
apply: Pokliče zaporko na objektu in vrne sam objekt. Znotraj bloka je dostop do objekta kot this. Uporaben za nastavitev lastnosti objekta.
// Primer uporabe apply
val textView = TextView(context).apply {
// this - TextView
text = "Pozdrav, svet!"
textSize = 16f
setTextColor(Color.BLACK)
}
Glavne razlike:
| Funkcija | Kako je dostopen objekt | Kaj vrne | Tipična uporaba |
|---|---|---|---|
let |
it |
Rezultat lambda | Nullable objekti, transformacija |
run |
this |
Rezultat lambda | Inicializacija in klicanje metod |
also |
it |
Sam objekt | Dodatne akcije (stranski učinki) |
apply |
this |
Sam objekt | Nastavitev lastnosti |