Menu
Coddy logo textTech

'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.

challenge icon

Görev

Kolay

Enum'ları ve switch ifadelerini kullanarak bir oyun karakterinin durumunu yöneten bir program oluşturun. Göreviniz şunları yapmaktır:

  1. Şu değerlere sahip CharacterState adında bir enum tanımlayın: idle, walking, running, jumping ve attacking
  2. CharacterState tipinde currentState adında bir değişken oluşturun ve ona CharacterState.idle değerini atayın
  3. Bir CharacterState parametresi alan ve bir switch ifadesi kullanarak duruma göre bir dize mesajı döndüren getStateMessage adında bir fonksiyon oluşturun:
    • CharacterState.idle için: "Character is standing still" döndürün
    • CharacterState.walking için: "Character is moving slowly" döndürün
    • CharacterState.running için: "Character is moving quickly" döndürün
    • CharacterState.jumping için: "Character is in the air" döndürün
    • CharacterState.attacking için: "Character is fighting" döndürün
  4. Fonksiyonu kullanarak başlangıç durumu mesajını şu formatta yazdırın: Initial state: Character is standing still
  5. currentState değerini CharacterState.walking olarak değiştirin
  6. Güncellenmiş durum mesajını şu formatta yazdırın: Updated state: Character is moving slowly
  7. currentState değerini CharacterState.attacking olarak değiştirin
  8. 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
}
quiz iconKendini test et

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