'switch' İfadelerinde Enumlar
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 61 / 65.
Enum'ların en güçlü uygulama alanlarından biri, onları switch ifadeleriyle birlikte kullanmaktır. Enum'ları switch ifadeleriyle birleştirdiğinizde, hem daha güvenli hem de bakımı daha kolay kodlar oluşturursunuz.
Bir switch ifadesinde enum'ı şu şekilde kullanabilirsiniz:
enum Status {
pending,
running,
completed
}
Status currentStatus = Status.pending;
switch (currentStatus) {
case Status.pending:
print('Task is waiting to start');
break;
case Status.running:
print('Task is currently in progress');
break;
case Status.completed:
print('Task has been finished');
break;
}Enum'ları switch ifadeleriyle kullanmanın güzelliği, Dart'ın tüm olası enum değerlerini ele aldığınızı doğrulayabilmesidir. Enum değerlerinden biri için bir case eklemeyi unutursanız, Dart sizi uyararak kodunuzdaki hataları önlemeye yardımcı olur.
Bu yaklaşım, yazım hatalarının beklenmedik davranışlara yol açabileceği switch ifadelerinde dize veya sayı kullanmaktan çok daha güvenlidir. Enum'lar ile, kodunuzun her olası senaryoyu ele almasını sağlayan derleme zamanı kontrolü elde edersiniz.
Görev
KolayEnum'ları ve switch ifadelerini kullanarak bir oyun karakterinin durumunu yöneten bir program oluşturun. Göreviniz şunları yapmaktır:
- Şu değerlere sahip
CharacterStateadında bir enum tanımlayın:idle,walking,running,jumpingveattacking CharacterStatetipindecurrentStateadında bir değişken oluşturun ve onaCharacterState.idledeğerini atayın- Bir
CharacterStateparametresi alan ve bir switch ifadesi kullanarak duruma göre bir dize mesajı döndürengetStateMessageadında bir fonksiyon oluşturun: CharacterState.idleiçin:"Character is standing still"döndürünCharacterState.walkingiçin:"Character is moving slowly"döndürünCharacterState.runningiçin:"Character is moving quickly"döndürünCharacterState.jumpingiçin:"Character is in the air"döndürünCharacterState.attackingiçin:"Character is fighting"döndürün- Fonksiyonu kullanarak başlangıç durumu mesajını şu formatta yazdırın:
Initial state: Character is standing still currentStatedeğeriniCharacterState.walkingolarak değiştirin- Güncellenmiş durum mesajını şu formatta yazdırın:
Updated state: Character is moving slowly currentStatedeğeriniCharacterState.attackingolarak değiştirin- Son durum mesajını şu formatta yazdırın:
Final state: Character is fighting
Programınız, bu kombinasyonun nasıl tip güvenli (type-safe) durum yönetimi sağladığını göstererek, enum'ların switch ifadeleriyle doğru kullanımını sergilemelidir. Switch ifadesi tüm enum değerlerini işlemeli ve her karakter durumu için uygun mesajı döndürmelidir. Dart isimlendirme kurallarına uyduğunuzdan ve yukarıda belirtilen dize mesajlarını aynen kullandığınızdan emin olun.
Kopya kağıdı
Enum'lar, tip güvenli kod için switch ifadeleriyle iyi çalışır:
enum Status {
pending,
running,
completed
}
Status currentStatus = Status.pending;
switch (currentStatus) {
case Status.pending:
print('Task is waiting to start');
break;
case Status.running:
print('Task is currently in progress');
break;
case Status.completed:
print('Task has been finished');
break;
}Dart, tüm enum değerlerinin switch ifadesinde ele alındığını doğrulayarak hataları önler ve derleme zamanı kontrolü sağlar.
Kendin dene
import 'dart:io';
// YAPILACAK: CharacterState enum'unuzu burada tanımlayın
// YAPILACAK: getStateMessage fonksiyonunuzu burada oluşturun
void main() {
// YAPILACAK: Kodunuzu aşağıya yazın
// currentState değişkenini oluşturun ve CharacterState.idle değerini atayın
// Başlangıç durumu mesajını yazdırın
// currentState'i CharacterState.walking olarak değiştirin
// Güncellenmiş durum mesajını yazdırın
// currentState'i CharacterState.attacking olarak değiştirin
// Son durum mesajını yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi6Temel Hata Yönetimi
İstisnalar Nedir?'try-catch' Bloğu'on' ile İstisnaları Yakalamak'finally' Bloğuİstisna FırlatmakÖzet - Güvenli Bölme9Numaralandırmalar (Enums)
Enum Nedir?Basit bir Enum TanımlamaDeğişkenlerde Enum Kullanımı'switch' İfadelerinde EnumlarÖzet - Trafik Lambası