CodeBlanks Logo Icon CodeBlanks

Switch ile enum

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

main.dart
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

main.dart
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?

main.dart
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

Soru
switch (s) {
  ____: print("çalışıyor"); break;
}
Cevap
switch (s) {
  case Status.active: print("çalışıyor"); break;
}

Açıklama: case'ten sonra sabit adı yazılır.

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