CodeBlanks Logo Icon CodeBlanks

Özet - Enum'lar

enum ve enhanced enum'u birleştirerek bir durum makinesi yazarsın.

Özet - Enum'lar

Bu grupta enum'lara giriş yaptık: klasik enum tanımı, .values ve .index erişimi, Dart 3 enhanced enum ile alan ve yöntem, switch ile dallanma ve pattern matching. Şimdi hepsini bir durum makinesinde birleştireceğiz.

Bir durum makinesi, sistemin belli durumları ve geçişleri olmasıdır. Örneğin bir sipariş: pending'den preparing'e, oradan shipped'e geçer. Enhanced enum her durumla ilgili veriyi taşır; switch expression bir durumu etikete çevirir. Bu, gerçek bir uygulamada enum'ları nasıl kullanacağını gösterir.

Uygulama Sıra sende: durum etiketi üret

Order adında, pending, preparing, shipped, delivered sabitlerini içeren bir enum tanımla. main içinde final o = Order.preparing; ata ve bir switch expression ile her durum için bir etiket üret: pending için "beklemede", preparing için "hazırlanıyor", shipped için "yolda", delivered için "teslim edildi". Sonucu print ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // Order enum'ını tanımla: pending, preparing, shipped, delivered
  // switch expression ile etiket üret ve yazdır
}

Örnek çözüm

main.dart
enum Order { pending, preparing, shipped, delivered }

void main() {
  final o = Order.preparing;
  final label = switch (o) {
    Order.pending => "beklemede",
    Order.preparing => "hazırlanıyor",
    Order.shipped => "yolda",
    Order.delivered => "teslim edildi",
  };
  print(label);
}

Beklenen çıktı

hazırlanıyor

Uygulama Sıra sende: enhanced enum ile durum

Stage adında enhanced enum tanımla; sabitler start(0), middle(50), end(100). final int percent alanı ve const Stage(this.percent) kurucusu olsun. main içinde final s = Stage.middle; ata ve bir switch expression ile percent'yi kullanarak "%50" biçiminde dize üret; tüm sabitler için aynı biçimde. Sonucu print ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // Stage enhanced enum'ını tanımla: start(0), middle(50), end(100)
  // switch expression ile %percent dizesi üret ve yazdır
}

Örnek çözüm

main.dart
enum Stage { start(0), middle(50), end(100); final int percent; const Stage(this.percent); }

void main() {
  final s = Stage.middle;
  final label = switch (s) {
    Stage.start => "%${s.percent}",
    Stage.middle => "%${s.percent}",
    Stage.end => "%${s.percent}",
  };
  print(label);
}

Beklenen çıktı

%50

Soru ve cevaplar

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

1 Durum makinesi eşleştir

Kavram Anlamı
enum durumları tanımlar
switch expression etiket üretir
enhanced enum durum verisini taşır
pattern matching alanları ayrıştırır

2 Durum makinesinde hangisi durumları tanımlar?

main.dart
enum Order { pending, preparing, shipped }
  • enum
  • for
  • if
  • switch Doğru cevap

Açıklama: enum durum adlarını taşır.

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