Middle
Koja je razlika između funkcija proširenja let, run, also i apply u Kotlinu?
sobes.tech АИ
Одговор од АИ
let: Poziva zatvaranje na objektu i vraća rezultat zatvaranja. Omogućava korišćenje objekta kao argumenta u lambda izrazu (it). Pogodno za rad sa nullable objektima.
// Primer korišćenja let
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - nije-null String
it.length
}
run: Izvršava blok koda na objektu i vraća rezultat bloka. Unutar bloka je objekat dostupan kao this. Korisno za inicijalizaciju i pozivanje metoda.
// Primer korišćenja run
val result = buildString {
// this - StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - String
uppercase()
}
also: Poziva zatvaranje na objektu i vraća sam objekat. Omogućava izvršavanje dodatnih radnji (npr. logovanje ili konfiguracija) na objektu bez promene.
// Primer korišćenja also
val list = mutableListOf("a", "b", "c").also {
// it - MutableList
println("Lista kreirana: $it")
}
apply: Poziva zatvaranje na objektu i vraća sam objekat. Unutar bloka je objekat dostupan kao this. Korisno za podešavanje svojstava objekta.
// Primer korišćenja apply
val textView = TextView(context).apply {
// this - TextView
text = "Zdravo, svet!"
textSize = 16f
setTextColor(Color.BLACK)
}
Glavne razlike:
| Funkcija | Kako je dostupan objekat | Šta vraća | Tipična upotreba |
|---|---|---|---|
let |
it |
Rezultat lambda izraza | Nullable objekti, transformacija |
run |
this |
Rezultat lambda izraza | Inicijalizacija i pozivanje metoda |
also |
it |
Sam objekat | Dodatne radnje (bočni efekti) |
apply |
this |
Sam objekat | Podešavanje svojstava |