late
- Dart kursu
- Orta seviye
- Ders 21/116
- 5 dk
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
// 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
// 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
class Config {
____ String apiKey;
void load(String key) {
apiKey = key;
}
}
class Config {
late String apiKey;
void load(String key) {
apiKey = key;
}
}
Açıklama: late, alanın sonradan başlatılacağını bildirir.