Dart
Ö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.
Örnek çözümü göster
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);
}
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.
Örnek çözümü göster
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);
}
Kendini test et
-
Durum makinesi eşleştir
- enum
- durumları tanımlar
- switch expression
- etiket üretir
- enhanced enum
- durum verisini taşır
- pattern matching
- alanları ayrıştırır
-
Durum makinesinde hangisi durumları tanımlar?
enum Order { pending, preparing, shipped }
Cevabı göster
switch — enum durum adlarını taşır.
Sıradaki ders: try/catch