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