Sobes.tech
Middle

Milline on erinevus laiendustegevuste let, run, also ja apply vahel Kotlinis?

sobes.tech AI

Vastus AI-lt

let: Kutsub objekti sulgemise ja tulemuse tagastamiseks. Võimaldab objekti kasutada lambda avaldises argumendina (it). Sobib töötamiseks nullable objektidega.

// Kasutamise näide let
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - see on mitte-null String
    it.length
}

run: Käivitab koodiploki objekti peal ja tagastab ploki tulemuse. Ploki sees on objekt kättesaadav kui this. Kasulik objekti initsialiseerimiseks ja meetodite kutsumiseks.

// Kasutamise näide run
val result = buildString {
    // this - see on StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - see on String
    uppercase()
}

also: Kutsub objekti sulgemise ja tagastab objekti ennast. Võimaldab teha täiendavaid toiminguid (näiteks logimine või konfiguratsioon) objekti muutmata.

// Kasutamise näide also
val list = mutableListOf("a", "b", "c").also {
    // it - see on MutableList
    println("Loodud nimekiri: $it")
}

apply: Kutsub objekti sulgemise ja tagastab objekti ennast. Ploki sees on objekt kättesaadav kui this. Mugav objekti omaduste seadistamiseks.

// Kasutamise näide apply
val textView = TextView(context).apply {
    // this - see on TextView
    text = "Tere, maailm!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Peamised erinevused:

Funktsioon Kuidas on objekt kättesaadav Mida tagastab Tüüpiline kasutusala
let it Lambda tulemus Nullable objektid, transformatsioon
run this Lambda tulemus Objekti initsialiseerimine ja meetodite kutsumine
also it Oma objekt Täiendavad toimingud (Side effects)
apply this Oma objekt Objekti omaduste seadistamine