Middle
Kotlin-də 'lazy' və 'lateinit' nədir?
sobes.tech Süni İntellekt
AI-dan cavab
lazy - qeyri- dəyişdirilə bilən (val) xüsusiyyətlərin gecikdirilmiş vəzifə nümayəndəsidir. Dəyər ilk müraciətdə hesablanır və sonra keşikdə saxlanılır.
// Lazy istifadə nümunəsi
val lazyValue: String by lazy {
println("Başlatma") // ilk müraciətdə yalnız bir dəfə göstəriləcək
"Salam, lazy!"
}
lateinit - dəyişkən (var) xüsusiyyətlər üçün modifikator, ilk girişə qədər inisializasiya etməyi gecikdirməyə imkan verir. Xüsusiyyət null olmamalıdır. İnisializasiya olmadan istifadə UninitializedPropertyAccessException ilə nəticələnir.
// lateinit istifadə nümunəsi
lateinit var lateinitVariable: String
fun initializeVariable() {
lateinitVariable = "Salam, lateinit!"
}
fun useVariable() {
// İstifadədən əvvəl inisializasiya yoxlaması (seçimlidir, amma tövsiyə olunur)
if (::lateinitVariable.isInitialized) {
println(lateinitVariable)
} else {
println("Dəyişən hələ inisializasiya olunmayıb")
}
}
Əsas fərqlər:
| Xüsusiyyət | lazy |
lateinit |
|---|---|---|
| Xüsusiyyət tipi | val (yalnız oxumaq üçün) |
var (dəyişkən) |
| Nullability | Nullable və ya non-nullable ola bilər | Non-nullable olmalıdır |
| İnisializasiya | Avtomatik, ilk girişdə | Əl ilə |
| Gecikmiş inisializasiya | Bəli, ilk girişdə | Bəli, inisializasiyadan sonra elan edilir |
| İplə təhlükəsizlik | Əsasən təhlükəsiz (sinxronizasiya), seçimlər mövcuddur | Garanli deyil, kontekstdən asılıdır |
| Girişdən əvvəl istisna | Xeyr, avtomatik inisializasiya olunur | UninitializedPropertyAccessException |