Switch ile enum
- Dart kursu
- Başlangıç
- Ders 97/116
- 5 dk
switch ile enum üzerinde dallanmayı öğrenirsin.
switch ve enum
Bir enum üzerinde dallanmak için switch kullanılır. Her case bir sabiti yakalar ve ilgili kodu çalıştırır. switch ile enum kullanmak, çok sayıda if'ten daha okunurdur; ayrıca derleyici tüm sabitlerin ele alınıp alınmadığını denetler.
Örnek: switch (status) { case Status.active: print("çalışıyor"); break; case Status.idle: print("bekliyor"); break; }. Her case'den sonra break çıkmak için gereklidir. Aksi halde derleyici uyarı verir. Dart 3 ile switch expression da gelir; buna bir sonraki derste bakacağız.
Exhaustive switch
enum üzerinde switch yazarken tüm sabitleri ele almak exhaustive (kapsamlı) olarak adlandırılır. Dart'ta eğer tüm sabitleri case ile yakaladıysan default şartı kalkar. Yeni bir sabit eklersen derleyici tüm case'leri gezer ve eksik olanı uyarır; bu büyük bir güvenliktir.
Yine de default ekleyebilirsin; özellikle ileride sabit eklenebilecekse veya dış kaynaktan gelen değer karşılaştırılıyorsa yararlıdır. default eklersen derleyici yeni sabit eklenince uyarmaz; bu yüzden çoğu durumda tüm sabitleri tek tek yazmak tercih edilir. Tüm sabitleri tek tek yazdığında break yerine return veya değer dönen ifade de kullanılabilir.
Uygulama Sıra sende: switch ile Status
Status adında active, idle, maintenance sabitlerini içeren bir enum tanımla. main içinde final s = Status.maintenance; ata ve bir switch ile maintenance için print("bakımda") yazdır. Diğer sabitler için de birer mesaj yaz; her case'ten sonra break koy.
Başlangıç kodu
void main() {
// Status enum'ını tanımla: active, idle, maintenance
// final s = Status.maintenance;
// switch ile her durum için mesaj yazdır
}Örnek çözüm
enum Status { active, idle, maintenance }
void main() {
final s = Status.maintenance;
switch (s) {
case Status.active:
print("çalışıyor");
break;
case Status.idle:
print("bekliyor");
break;
case Status.maintenance:
print("bakımda");
break;
}
}Beklenen çıktı
bakımda
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 switch parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
switch |
dallanmayı başlatır |
case |
bir sabiti yakalar |
break |
dallanmadan çıkar |
default |
yakalanmayanlar için |
2 switch ile enum kullanırken ne zorunludur?
switch (s) {
case Status.active: ...
}- Sabit adı doğrudan yazılır
- if de yazılır Doğru cevap
- default zorunlu
- case'ten sonra break
Açıklama: case'ten sonra break çıkış için gereklidir.
3 case etiketi
switch (s) {
____: print("çalışıyor"); break;
}
switch (s) {
case Status.active: print("çalışıyor"); break;
}
Açıklama: case'ten sonra sabit adı yazılır.