Sobes.tech
Middle

Kotlin-də let, run, also və apply genişləndirmə funksiyaları arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

let: Bir bağlama çağırır və bağlamanın nəticəsini qaytarır. Ob'ekti lambda ifadəsində (it) arqument kimi istifadə etməyə imkan verir. Nullable obyektlərlə işləmək üçün uyğundur.

// let istifadə nümunəsi
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - null olmayan String
    it.length
}

run: Bir obyekt üzərində kod blokunu icra edir və blokun nəticəsini qaytarır. Blok daxilində obyekt this kimi əlçatan olur. Ob'ektin başlanğıcı və metodların çağırılması üçün faydalıdır.

// run istifadə nümunəsi
val result = buildString {
    // this - StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - String
    uppercase()
}

also: Bir obyekt üzərində bağlama çağırır və ob'ektin özünü qaytarır. Ob'ekt üzərində əlavə əməliyyatlar (məsələn, qeyd və ya konfiqurasiya) etmək üçün uyğundur, onu dəyişmir.

// also istifadə nümunəsi
val list = mutableListOf("a", "b", "c").also {
    // it - MutableList
    println("Siyahı yaradıldı: $it")
}

apply: Bir obyekt üzərində bağlama çağırır və ob'ektin özünü qaytarır. Blok daxilində ob'ekt this kimi əlçatan olur. Ob'ektin xüsusiyyətlərini tənzimləmək üçün faydalıdır.

// apply istifadə nümunəsi
val textView = TextView(context).apply {
    // this - TextView
    text = "Salam, dünya!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Əsas fərqlər:

Funksiya Ob'ektə necə əlçatan olur Nə qaytarır Tipik istifadə
let it Lambda nəticəsi Nullable obyektlər, transformasiya
run this Lambda nəticəsi Ob'ektin başlanğıcı və metodların çağırılması
also it Ob'ektin özü Əlavə əməliyyatlar (yan təsirlər)
apply this Ob'ektin özü Xüsusiyyətlərin tənzimlənməsi