Reddedilemez Desenler (Irrefutable Patterns)

  1. günde, desenlerin bileşik değerlerini (compound values) çözümlemek (destructure) için nasıl kullanılabileceğini kısaca görmüştük. Şimdi bunu gözden geçirelim ve desenlerin ifade edebileceği birkaç diğer şey hakkında konuşalım:
fn takes_tuple(tuple: (char, i32, bool)) {
    let a = tuple.0;
    let b = tuple.1;
    let c = tuple.2;

    // Bu, yukarıdakiyle aynı şeyi yapar.
    let (a, b, c) = tuple;

    // İlk elemanı yoksay, sadece ikinci ve üçüncüyü bağla.
    let (_, b, c) = tuple;

    // Son eleman hariç her şeyi yoksay.
    let (.., c) = tuple;
}

fn main() {
    takes_tuple(('a', 777, true));
}
This slide should take about 5 minutes.
  • Gösterilen desenlerin tümü reddedilemezdir (irrefutable), yani her zaman sağ taraftaki değerle eşleşeceklerdir.

  • Desenler, reddedilemez (irrefutable) desenler de dahil olmak üzere türe özgüdür (type-specific). Demete (tuple) bir eleman eklemeyi veya çıkarmayı deneyin ve ortaya çıkan derleyici hatalarına bakın.

  • Değişken adları her zaman eşleşen ve eşleştikleri değeri bu isimle yeni bir değişkene bağlayan (bind) desenlerdir.

  • _ her zaman herhangi bir değerle eşleşen ve eşleşen değeri atan (discarding) bir desendir.

  • .. aynı anda birden fazla değeri yok saymanıza olanak tanır.

Daha Fazlasını Keşfedin

  • Ayrıca, bir demetin (tuple) ortadaki elemanlarını yok saymak gibi ..’nın daha gelişmiş kullanımlarını da gösterebilirsiniz.

    #![allow(unused)]
    fn main() {
    fn takes_tuple(tuple: (char, i32, bool, u8)) {
        let (first, .., last) = tuple;
    }
    }
  • Bu desenlerin tümü dizilerle (arrays) de çalışır:

    #![allow(unused)]
    fn main() {
    fn takes_array(array: [u8; 5]) {
        let [first, .., last] = array;
    }
    }