CodeBlanks Logo Icon CodeBlanks

@ bağlama

@ operatörü ile değer aralığı bağlamayı öğrenirsin.

@ bağlama

ad @ kalıp, bir değeri kalıba göre denetlerken aynı anda bir değişkene bağlar. Aralıklar ve iç içe kalıplarla birlikte kullanışlıdır:

fn basamak(n: u32) -> String {
    match n {
        k @ 0..=9 => format!("tek basamak {k}"),
        k @ 10..=99 => format!("iki basamak {k}"),
        k => format!("büyük {k}"),
    }
}

match opt {
    Some(x @ 1..=5) => println!("küçük: {x}"),
    Some(x) => println!("diğer: {x}"),
    None => {}
}

@ olmasaydı aralık kalıbı değeri bağlamazdı ve kolda n yeniden kullanılmak zorunda kalınırdı.

| ile birlikte

@ birden çok alternatifli kalıplarla da çalışır; tüm alternatifler aynı değişkeni bağlamalıdır:

match karakter {
    c @ ('a' | 'e' | 'ı' | 'i' | 'o' | 'ö' | 'u' | 'ü') => println!("sesli {c}"),
    c @ ('0'..='9') => println!("rakam {c}"),
    c => println!("diğer {c}"),
}

Uygulama Basamak sınıfı

Yukarıdaki basamak fonksiyonunu @ bağlamalarıyla yaz. 7, 42 ve 500 için sonuçları ayrı satırlara yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn basamak(n: u32) -> String {
    match n {
        k @ 0..=9 => format!("tek basamak {k}"),
        k @ 10..=99 => format!("iki basamak {k}"),
        k => format!("büyük {k}"),
    }
}

fn main() {
    for n in [7, 42, 500] {
        println!("{}", basamak(n));
    }
}

Beklenen çıktı

tek basamak 7
iki basamak 42
büyük 500

Soru ve cevaplar

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

1 <code>e @ Mesaj::Yaz(_)</code> kalıbı ne bağlar?

  • Derlenmez
  • Tüm Mesaj::Yaz değerini e'ye Doğru cevap
  • Yalnızca içteki metni
  • Hiçbir şey

Açıklama: @ bütün değeri bağlar; iç parçaya da ihtiyaç varsa e @ Mesaj::Yaz(ref m) gibi birlikte yazılabilir.

2 Aralıkla bağla

Soru
match n {
    k ____ 0..=9 => format!("tek basamak {k}"),
    k => format!("{k}"),
}
Cevap
match n {
    k @ 0..=9 => format!("tek basamak {k}"),
    k => format!("{k}"),
}

Açıklama: @ hem aralığı denetler hem değeri k'ye bağlar.

3 Sayı ve basamak sonucu

Kavram Anlamı
7 tek basamak 7
42 iki basamak 42
500 büyük 500
0 tek basamak 0

İleri seviye bölümündeki tüm dersler