Skip to content

Latest commit

 

History

History
74 lines (59 loc) · 2.86 KB

enum.md

File metadata and controls

74 lines (59 loc) · 2.86 KB

Numaralandırmalar

⭐️ Farklı varyantların nümeratik sırayla bir araya getirildiği ve olası değerlerlerinin tuttulduğu bir türdür:

#[derive(Debug)]
enum Gunler {
    Pazartesi,
    Sali,
    Carsamba,
    Persembe,
    Cuma,
    Cumartesi,
    Pazar,
}

Örneğimizdeki Gunler bir enumdur ve süslü parantezler içinde yer alan Pazartesi, Sali, Carsamba, Persembe, Cuma, Cumartesi, Pazar günleri ise bu enum’un varyantlarıdır.

⭐️ Bir enum’un sahip olduğu varyantlara :: gösterimi, yani Gunler::Pazartesi şeklindeki söz dizimiyle erişilir:

fn main() {
    let haftanin_ilk_is_gunu = Gunler::Pazartesi;
    print!("Haftanın ilk iş günü {:?}'dir.", haftanin_ilk_is_gunu);
}
// Haftanın ilk iş günü Pazartesi'dir.

⭐️ Bir enum türünün varyantları:

  • Verisiz olarak yani (Birim varyant) şeklinde,
  • İsimsiz sıralı veriler halinde, yani çokuzlu varyantı şeklinde (Çokuzlu varyant) verilerden,
  • İsimlendirilmiş varyantlar, yani yapı alanlarına benzer biçimde (Yapısal varyant)

oluşabilir.

#[derive(Debug)]

enum Denetim {
    Basarili,                               // Birim Varyantlı
    Dikkat {kategori: i32, mesaj: String }, // Yapısal Varyantlı
    Hata(String),                           // Çokuzlu Varyabtlı
}

fn denetim_mesaji_yazdir(dm: Denetim) {
    match dm {
        Denetim::Basarili                   => println!("Form sorunsuzca gönderildi"),
        Denetim::Dikkat{kategori, mesaj}    => 
            println!("Uyarı: {}, {}", kategori, mesaj),
        Denetim::Hata(msj)                  => println!("Hata mesajı {}", msj),
    };
}
    
fn main() {
    let mut form_kontrol = Denetim::Basarili;
    denetim_mesaji_yazdir(form_kontrol);
    // Form sorunsuzca gönderildi
    
    form_kontrol = Denetim::Dikkat { 
        kategori: 2, mesaj: String::from("O alan doldurulacak!")};
    denetim_mesaji_yazdir(form_kontrol);
    // Uyarı: 2, O alan doldurulacak!
    
    form_kontrol = Denetim::Hata(String::from("Bağlantı hatası!"));
    denetim_mesaji_yazdir(form_kontrol);
    // Hata mesajı Bağlantı hatası!
}

Sonraki konuya geçmeden önce...

Aşağıda enum türünün daha iyi anlaşılabilmesi için üzerinde oynayabileceğiniz birkaç örnek yer almaktadır. Bu örneklerden ilki oldukça basit hazırlanmış ve bir oyun karakterinin gideceği dört ana yönün hangisi seçildiyse onu ekranqa yazdıran Dört yöne gidiş örneği'dir.

Diğer örnekte ise haftanın günlerini varyantlarında tutan ve eklenilen özellik yardımıyla tatil günlerini iş günlerinden ayıran bir enum türüne yer verilmektedir.