CodeBlanks Logo Icon CodeBlanks

Enum tanımı

enum ile numaralandırma tanımlamayı öğrenirsin.

Enum tanımı

Enum (numaralandırma), bir değerin sabit bir seçenek kümesinden yalnızca biri olabileceğini ifade eden türdür. Her seçeneğe variant denir:

#[derive(Debug)]
enum Yon {
    Kuzey,
    Guney,
    Dogu,
    Bati,
}

let y = Yon::Dogu;
println!("{:?}", y);   // Dogu

Variant'lar enum adıyla nitelenir: Yon::Dogu. Struct "ve" ilişkisini (ad ve puan), enum "ya da" ilişkisini (kuzey ya da güney) modeller.

Enum ve tamsayılar

Veri taşımayan variant'lar arka planda bir ayırt edici sayı (discriminant) ile tutulur; açıkça değer verilebilir ve as ile tamsayıya çevrilebilir:

enum Durum {
    Bekliyor = 1,
    Hazir = 2,
    Hata = 9,
}

println!("{}", Durum::Hata as i32);   // 9

Tersi (tamsayıdan enum'a) otomatik değildir; geçersiz sayılar olabileceği için match ile elle yazılır.

Uygulama Yön enum'ı

#[derive(Debug)] ile Kuzey, Guney, Dogu, Bati variant'larından oluşan enum Yon tanımla. Yon::Dogu değerini bir değişkene ata ve {:?} ile yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
#[derive(Debug)]
enum Yon {
    Kuzey,
    Guney,
    Dogu,
    Bati,
}

fn main() {
    let y = Yon::Dogu;
    println!("{:?}", y);
}

Beklenen çıktı

Dogu

Soru ve cevaplar

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

1 Hangisi enum için en uygun örnektir?

  • Bir metin
  • Trafik ışığının rengi: kırmızı, sarı, yeşil Doğru cevap
  • Bir kişinin adı ve yaşı
  • Bir sayı listesi

Açıklama: Değer, sabit seçeneklerden yalnızca biri olabiliyorsa enum doğal seçimdir.

2 Variant seç

Soru
let y = Yon____Bati;
Cevap
let y = Yon::Bati;

Açıklama: Variant'lar EnumAdı::Variant biçiminde yazılır.

3 Kavram ve örnek

Kavram Anlamı
enum Yon { .. } Enum tanımı
Yon::Dogu Variant değeri
Durum::Hata as i32 Ayırt edici sayı
#[derive(Debug)] Variant adını yazdırır

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

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma