Null check
- Dart kursu
- Başlangıç
- Ders 75/116
- 5 dk
if (x != null) ile null kontrolünü öğrenirsin.
Null check
En güvenli null yönetimi if (x != null) kontrolüdür. Bu bloğun içinde x artık non-nullable olarak ele alınır; bu davranışa type promotion (tür yükseltme) denir.
Örnek: String? name = 'Ayşe'; if (name != null) { print(name.length); }. Blok içinde name null olmadığı için .length güvenle çağrılır.
Bu desen ! ve ?. yerine daha güvenlidir; çünkü kontrolü açıkça yapar ve blok içinde tür garantisi verir. Karmaşık koşullarda dart garantiyi sınırlayabilir; bu durumda ! yardımcı olur.
Promotion sınırları
Type promotion çoğu durumda çalışır ama bazı sınırları vardır. Eğer değişken bir lambda içinde değiştirilebiliyorsa, Dart blok içinde garantiyi kaldırabilir. Bu durumda ! veya yerel bir kopya almak gerekir.
Örnek: String? name = 'Ayşe'; if (name != null) { var f = () => print(name); }. Burada lambda name'i sonradan değiştirebilir; bu yüzden Dart garantiyi kaldırır.
Pratikte bu nadir görülür. Basit if (x != null) bloklarında promotion güvenle işler. Yine de karmaşık durumlarda ! veya yerel kopya çözüm olabilir.
Uygulama Null check ile length
Bir String? name tanımla ve 'Ayşe' ata. if (name != null) ile kontrol et; blok içinde print(name.length) çağrısı ekle.
Başlangıç kodu
void main() {
// nullable değişken tanımla ve 'Ayşe' ata
// if ile null kontrolü ve length yazdır
}Örnek çözüm
void main() {
String? name = 'Ayşe';
if (name != null) {
print(name.length);
}
}Beklenen çıktı
4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 if (name != null) bloğunda name?
- String (non-nullable) Doğru cevap
- null
- Yine String?
- Hata verir
Açıklama: null kontrolü sonrası tür non-nullable olur.
2 Null yöntemlerini eşleştir
| Kavram | Anlamı |
|---|---|
if (x != null) |
Tür yükseltme |
?. |
Güvenli erişim |
! |
Null assertion |
?? |
Varsayılan değer |
3 if ile null kontrolü
void main() {
String? name = 'Ayşe';
if (name ____ != null) {
print(name.length);
}
}
void main() {
String? name = 'Ayşe';
if (name != != null) {
print(name.length);
}
}
Açıklama: != ile 'null değil' koşulu kurulur.