Sobes.tech
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