0Pricing
Learn Rust Coding · Ders

Enum Varyantlarıyla Eşleştirme

Her durumu yönetmek için match kullanın.

Enum Varyantlarıyla Eşleştirme, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

match İfadesiyle Tanışma

match ifadesi bir değeri bir dizi desenle karşılaştırır ve uyan ilk desenin kodunu çalıştırır.

Bu ifade, enum'ların doğal eşidir: her varyantı kendi kolunda işleyebilirsiniz.

enum Light {
    Red,
    Green,
}

fn action(l: Light) {
    match l {
        Light::Red => println!("Stop"),
        Light::Green => println!("Go"),
    }
}

Bir match Kolunun Yapısı

Her kol pattern => expression biçimindedir ve kollar virgüllerle ayrılır.

Desen, eşleştirilecek şeydir; => sonrasındaki ifade ise eşleşme gerçekleştiğinde çalışır. Buradaki desen tek bir enum varyantıdır.

match light {
    Light::Red => println!("Stop"),
    Light::Green => println!("Go"),
}

Tam Bir Eşleştirme Programı

Aşağıda bir trafik ışığıyla eşleşen ve bir talimat yazdıran eksiksiz bir program bulunmaktadır.

Programı çalıştırın, ardından farklı bir kolun çalıştığını görmek için main içindeki varyantı değiştirin.

enum TrafficLight {
    Red,
    Yellow,
    Green,
}

fn main() {
    let light = TrafficLight::Yellow;
    match light {
        TrafficLight::Red => println!("Stop"),
        TrafficLight::Yellow => println!("Slow down"),
        TrafficLight::Green => println!("Go"),
    }
}

match Eksiksiz Olmalıdır

Rust, match ifadesinin tüm olası varyantları kapsamasını gerektirir. Birini unutursanız program derlenmez.

Bu güçlü bir güvenlik özelliğidir: daha sonra yeni bir varyant eklediğinizde derleyici, bunun işlenmesi gereken her yeri size hatırlatır.

// This would FAIL to compile because
// the Green case is missing:
// match light {
//     Light::Red => println!("Stop"),
// }

_ ile Tümünü Yakalama

Her varyantı listelemek istemediğinizde tümünü yakalayan desen olarak alt çizgi _ kullanın. Bu desen, yukarıda işlenmemiş her şeyle eşleşir.

Kollar sırayla denendiği için bunu en sona yerleştirin.

enum Coin {
    Penny,
    Nickel,
    Dime,
    Quarter,
}

fn main() {
    let c = Coin::Dime;
    match c {
        Coin::Penny => println!("1 cent"),
        _ => println!("Some other coin"),
    }
}

match Bir Değer Döndürür

match bir ifadedir; bu nedenle bir değişkende saklayabileceğiniz bir değer üretir.

Her kol aynı türü döndürmelidir. Burada her kolun ifadesinden sonra noktalı virgül bulunmadığına dikkat edin.

enum Coin {
    Penny,
    Quarter,
}

fn main() {
    let coin = Coin::Quarter;
    let cents = match coin {
        Coin::Penny => 1,
        Coin::Quarter => 25,
    };
    println!("{} cents", cents);
}

Birden Çok Satırlı Kol Gövdeleri

Bir kol, ifadeleri süslü parantezler { ... } içine alarak birkaç ifade çalıştırabilir.

Süslü parantezlerin içindeki son ifade, kolun ürettiği değerdir.

match light {
    Light::Red => {
        println!("Caution!");
        println!("Stop the car");
    }
    Light::Green => println!("Go"),
}

Desenleri | ile Birleştirme

Birden fazla varyantı tek bir kolda eşleştirmek için dikey çubuk | kullanın. Bu, "veya" şeklinde okunur.

Bu sayede aynı şekilde davranması gereken varyantlar için aynı gövdeyi tekrarlamaktan kaçınırsınız.

enum Coin {
    Penny,
    Nickel,
    Dime,
    Quarter,
}

fn main() {
    let c = Coin::Nickel;
    match c {
        Coin::Penny | Coin::Nickel => println!("Small coin"),
        _ => println!("Bigger coin"),
    }
}

match ve if/else Karşılaştırması

Varyantları denetlemek için art arda if / else if kullanabilirsiniz; ancak match daha açık ve daha güvenlidir.

match ile derleyici her durumu işlediğinizi doğrular. Bir if ifadeleri zinciri böyle bir güvence vermez.

Eşleştirme ve Yazdırmayı Birlikte Kullanma

Yaygın bir kalıp, bir varyantı anlaşılır bir metne dönüştürüp yazdırmaktır.

Bu programı çalıştırın ve eşleşen mesajı görmek için seçilen yönü değiştirin.

enum Direction {
    North,
    South,
    East,
    West,
}

fn main() {
    let d = Direction::West;
    let name = match d {
        Direction::North => "North",
        Direction::South => "South",
        Direction::East => "East",
        Direction::West => "West",
    };
    println!("Heading {}", name);
}

Sıra Önemlidir

Kollar yukarıdan aşağıya denetlenir ve ilk eşleşme kazanır. Kalanlar atlanır.

Tümünü yakalayan _ deseninin en sonda bulunması bu nedenle önemlidir: İlk sırada olsaydı her değeri yutar ve belirli kolların çalışmasına fırsat bırakmazdı.

Kısa Kontrol

match hakkındaki anlayışınızı kontrol edin.

Özet

match ifadesinin bir değeri desenlerle karşılaştırdığını ve ilk eşleşen kolu çalıştırdığını öğrendiniz.

Bu ifade eksiksiz olmalı, tümünü yakalamak için _ kullanabilir, varyantları | ile birleştirebilir ve bir ifade olduğu için değer döndürebilir. Sırada enum varyantlarına kendi verilerini vereceksiniz.

Sıkça Sorulan Sorular

“Enum Varyantlarıyla Eşleştirme” dersi ücretsiz mi?

Evet — “Enum Varyantlarıyla Eşleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Enum Varyantlarıyla Eşleştirme” dersinde ne öğreneceğim?

Her durumu yönetmek için match kullanın. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Enum Varyantlarıyla Eşleştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İlk Enum'unuzu Tanımlama
  2. Enum Varyantlarıyla Eşleştirme
  3. Veri İçeren Enum'lar
  4. Match Koruyucuları ve Bağlamaları
← Learn Rust Coding Sayfasına Dön