CodeBlanks Logo Icon CodeBlanks

by lazy

by lazy ile tembel başlatma öğrenirsin.

by lazy

by lazy ile bir val değişkeninin değerini ilk erişimde hesaplayabilirsin. Bu, pahalı bir işlemin yalnızca gerçekten gerekirse yapılmasını sağlar.

lazy bir temsilci (delegate) olur; değişkene ilk erişildiğinde blok çalışır ve sonuç saklanır, sonraki erişimlerde aynı sonuç döner.

val bigData by lazy {
    println("Hesaplanıyor")
    1 + 2 + 3
}

fun main() {
    println(bigData)   // Hesaplanıyor, 6
    println(bigData)   // 6 (yeniden hesaplanmaz)
}

Uygulama by lazy dene

Üst düzeyde val result by lazy { 2 * 3 } tanımla. fun main() içinde println(result) ile yazdır.

Örnek çözüm

Main.kt
val result by lazy { 2 * 3 }

fun main() {
    println(result)
}

Beklenen çıktı

6

by lazy ve lateinit farkı

by lazy ve lateinit ikisi de ertelenmiş başlatma sağlar ama farklı yollarla. by lazy yalnızca val için kullanılır ve değer bir bloktan hesaplanır; ilk erişimde otomatik çalışır.

lateinit ise yalnızca var için kullanılır ve değeri sen elle atarsın; erişimden önce atanmazsa istisna fırlatır. by lazy iş parçacığı güvenlidir (thread-safe), lateinit değildir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 by lazy: eksik parçayı tamamla

Soru
val result ____ lazy { 1 + 2 }
Cevap
val result by lazy { 1 + 2 }

Açıklama: by lazy ile tembel değer tanımlanır.

2 by lazy ne zaman hesaplar?

  • Derleme zamanında
  • Her erişimde
  • İlk erişimde Doğru cevap
  • Hiçbir zaman

Açıklama: by lazy yalnızca ilk erişimde hesaplar ve saklar.

3 by lazy: kavramları eşleştir

Kavram Anlamı
by lazy İlk erişimde
lateinit Sonra atanır
const val Derleme zamanı
val Bir kez atanır

Başlangıç bölümündeki tüm dersler