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 |