Middle
Kotlin'da let, run, also va apply kengaytirish funksiyalari orasidagi farq nima?
sobes.tech AI
AIdan javob
let: Ob'ekt ustun qiladigan va uning natijasini qaytaradigan yopilish chaqiradi. Ob'ektni lambda ifodasida (it) argument sifatida ishlatishga imkon beradi. Nullable ob'ektlar bilan ishlash uchun mos.
// let misoli
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - null bo'lmagan String
it.length
}
run: Ob'ekt ustida kod blokini bajaradi va blok natijasini qaytaradi. Blok ichida ob'ekt this sifatida mavjud. Ob'ektni boshlash va metodlarni chaqirish uchun qulay.
// run misoli
val result = buildString {
// this - StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - String
uppercase()
}
also: Ob'ekt ustida yopilish chaqiradi va ob'ektni o'zi bilan qaytaradi. Qo'shimcha amallar (masalan, log yozish yoki sozlash) uchun qulay, ob'ektni o'zgartirmaydi.
// also misoli
val list = mutableListOf("a", "b", "c").also {
// it - MutableList
println("Ro'yxat yaratildi: $it")
}
apply: Ob'ekt ustida yopilish chaqiradi va ob'ektni o'zi bilan qaytaradi. Blok ichida ob'ekt this sifatida mavjud. Ob'ektning xususiyatlarini sozlash uchun qulay.
// apply misoli
val textView = TextView(context).apply {
// this - TextView
text = "Salom, dunyo!"
textSize = 16f
setTextColor(Color.BLACK)
}
Asosiy farqlar:
| Funksiya | Ob'ektga qanday kirishiladi | Nima qaytaradi | Tipik qo'llanilishi |
|---|---|---|---|
let |
it |
Lambda natijasi | Nullable ob'ektlar, transformatsiya |
run |
this |
Lambda natijasi | Ob'ektni boshlash va metodlarni chaqirish |
also |
it |
Ob'ekt o'zi | Qo'shimcha amallar (yon ta'sirlar) |
apply |
this |
Ob'ekt o'zi | Xususiyatlarni sozlash |