Reddedilemez Desenler (Irrefutable Patterns)
- 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; } }