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 |