Middle
Kokia yra skirtumas tarp išplėtimo funkcijų let, run, also ir apply Kotlin?
sobes.tech AI
Atsakymas iš AI
let: Iškviečia užrakinimą objektu ir grąžina užrakto rezultatą. Leidžia naudoti objektą kaip lambda išraiškos argumentą (it). Tinka dirbti su nullable objektais.
// Pavyzdys naudojant let
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - tai ne-null String
it.length
}
run: Atlieka kodo bloką ant objekto ir grąžina bloko rezultatą. Bloko viduje objektas yra pasiekiamas kaip this. Naudinga objekto inicializacijai ir metodų iškvietimui.
// Pavyzdys naudojant run
val result = buildString {
// this - tai StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - tai String
uppercase()
}
also: Iškviečia užrakinimą ant objekto ir grąžina patį objektą. Leidžia atlikti papildomas operacijas (pvz., logavimą ar konfigūraciją) be objekto keitimo.
// Pavyzdys naudojant also
val list = mutableListOf("a", "b", "c").also {
// it - tai MutableList
println("Sukurta sąrašas: $it")
}
apply: Iškviečia užrakinimą ant objekto ir grąžina patį objektą. Bloko viduje objektas yra pasiekiamas kaip this. Patogu nustatyti objekto savybes.
// Pavyzdys naudojant apply
val textView = TextView(context).apply {
// this - tai TextView
text = "Labas, pasauli!"
textSize = 16f
setTextColor(Color.BLACK)
}
Pagrindiniai skirtumai:
| Funkcija | Kaip pasiekiamas objektas | Ką grąžina | Tipinė taikymo sritis |
|---|---|---|---|
let |
it |
Lambda rezultatas | Nullable objektai, transformacija |
run |
this |
Lambda rezultatas | Objektų inicializacija ir metodų iškvietimas |
also |
it |
Pats objektas | Papildomos operacijos (Side effects) |
apply |
this |
Pats objektas | Objektų savybių nustatymas |