CodeBlanks Logo Icon CodeBlanks

Özet - Kalıp eşleştirme

match, if let ve _ jokerini birleştirerek bir komut yorumlayıcı yazarsın.

Kalıp eşleştirme özeti

match kapsayıcıdır ve ilk uyan kolu çalıştırır. Kalıplar: sabitler, |, ..= aralıkları, tuple/struct/enum açma, @ bağlama, _ ve ... Tek kalıp için if let, döngü için while let, erken çıkış için let-else, bool için matches! kullanılır. Kollara koşul (guard) da eklenebilir: x if x < 0 => ...

Match guard

Kalıbın tek başına ifade edemediği koşullar için kola if eklenir:

fn sinif(n: i32) -> &'static str {
    match n {
        x if x < 0 => "negatif",
        0 => "sıfır",
        x if x % 2 == 0 => "çift",
        _ => "tek",
    }
}

Guard, | ile birleşen kalıpların tamamına uygulanır: 1 | 2 if kosul → (1 ya da 2) ve koşul.

Uygulama Sayı sınıfı

Yukarıdaki fn sinif(n: i32) -> &'static str fonksiyonunu match guard'larla yaz. -3, 0, 4 ve 7 için sonuçları boşlukla ayırarak tek satırda yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn sinif(n: i32) -> &'static str {
    match n {
        x if x < 0 => "negatif",
        0 => "sıfır",
        x if x % 2 == 0 => "çift",
        _ => "tek",
    }
}

fn main() {
    println!("{} {} {} {}", sinif(-3), sinif(0), sinif(4), sinif(7));
}

Beklenen çıktı

negatif sıfır çift tek

Soru ve cevaplar

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

1 Koşullu kollar (guard) kullanılırken kapsayıcılık için ne gerekir?

  • Genellikle koşulsuz bir son kol (_ gibi) Doğru cevap
  • Hiçbir şey; derleyici koşulları çözer
  • Her kolda guard
  • else bloğu

Açıklama: Derleyici guard ifadelerini değerlendirmez; bu yüzden kalan durumları koşulsuz bir kol karşılamalıdır.

2 Koşul ekle

Soru
match n {
    x ____ x < 0 => "negatif",
    _ => "pozitif ya da sıfır",
}
Cevap
match n {
    x if x < 0 => "negatif",
    _ => "pozitif ya da sıfır",
}

Açıklama: Match guard, kalıptan sonra if ile yazılır.

3 sinif() girdisi ve sonucu

Kavram Anlamı
-3 negatif
0 sıfır
4 çift
7 tek

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