CodeBlanks Logo Icon CodeBlanks

late

late ile gecikmiş başlatma öğrenirsin.

late

Bazen bir alanın başlangıç değerini yapıcıda değil, daha sonra vermek istersin. late anahtar kelimesi, alanın sonradan başlatılacağını bildirir; ilk erişimde değeri verilmiş olmalıdır.

Örnek: class Config { late String apiKey; void load(String key) { apiKey = key; } }. Burada apiKey late olarak bildirilmiştir; load metodu çağrılınca değeri atanır. Eğer load çağrılmadan apiKey okunursa LateInitializationError fırlatılır. Bu yapı, ağır kaynakların yalnızca gerektiğinde hazırlanması ve döngüsel bağımlılıkların çözülmesi için uygundur.

late ve lazy başlatma

late anahtar kelimesi bir gövdeyle de kullanılabilir; bu durumda alan lazy (tembel) başlatılır: ilk erişimde gövde çalışır ve sonuç saklanır.

Örnek: late final heavy = _compute();. Burada heavy alanı ilk okunduğunda _compute() çağrılır ve sonuç saklanır; sonraki okumalar aynı sonucu döner. _compute hiç çağrılmazsa hiç çalışmaz. Bu yapı, maliyetli hesaplamaları yalnızca gerektiğinde yapmanın temiz yoludur. late final birleşimi, değerin bir kez hesaplanıp saklanmasını garanti eder.

Uygulama Config sınıfına late alan ekle

Config adında bir sınıf tanımla. late String apiKey alanını ekle. void load(String key) { apiKey = key; } metodunu yaz. main içinde var c = Config(); ile örnek oluştur, c.load('abc123') çağrısı yap ve print(c.apiKey) ile yazdır.

Başlangıç kodu

main.dart
// Config sınıfını tanımla
// late apiKey alanı ve load metodu ekle

void main() {
  // Config örneği oluştur, load('abc123') çağır ve c.apiKey yazdır
}

Örnek çözüm

main.dart
// Config sınıfını tanımla
class Config {
  late String apiKey;
  void load(String key) {
    apiKey = key;
  }
}

void main() {
  var c = Config();
  c.load('abc123');
  print(c.apiKey);
}

Beklenen çıktı

abc123

Soru ve cevaplar

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

1 late alan ne zaman hata verir?

  • Yapıcı çağrıldığında
  • Static alan olarak bildirilirse
  • final ile birlikte kullanılırsa
  • Değeri atanmadan okunursa Doğru cevap

Açıklama: late alan, ilk erişimde değer verilmemişse LateInitializationError fırlatır.

2 late parçalarını eşle

Kavram Anlamı
late Anahtar kelime
apiKey Sonradan atanan alan
load Atama yapan metot

3 late anahtarını ekle

Soru
class Config {
  ____ String apiKey;
  void load(String key) {
    apiKey = key;
  }
}
Cevap
class Config {
  late String apiKey;
  void load(String key) {
    apiKey = key;
  }
}

Açıklama: late, alanın sonradan başlatılacağını bildirir.

Orta seviye bölümündeki tüm dersler