match İfadeleri
match bir değeri bir veya daha fazla seçeneğe göre kontrol etmek için kullanılabilir:
fn main() { let val = 1; match val { 1 => println!("bir"), 10 => println!("on"), 100 => println!("yüz"), _ => { println!("başka bir şey"); } } }
if ifadeleri gibi match ifadesi de bir değeri geri döndürebilir (return);
fn main() { let flag = true; let val = match flag { true => 1, false => 0, }; println!("{flag}'in değeri = {val}"); }
-
matchkolları (arms) yukarıdan aşağıya doğru değerlendirilir ve eşleşen ilk kolun karşılık gelen gövdesi (body) çalıştırılır. -
switch’in diğer dillerdeki çalışma şekli gibi durumlar (cases) arasında aşağıya geçiş (fall-through) yoktur. -
Bir
matchkolunun gövdesi tek bir ifade (expression) veya bir blok olabilir. Teknik olarak bu aynı şeydir, çünkü bloklar da bir ifadedir, ancak öğrenciler bu noktadaki denk yapıyı (symmetry) tam olarak anlamayabilirler. -
matchifadelerinin kapsamlı (exhaustive) olması gerekir, yani ya tüm olası değerleri kapsamaları ya da_gibi varsayılan bir duruma (case) sahip olmaları gerekir. Kapsamlılık (Exhaustiveness) enumlarla gösterilmesi en kolay olanıdır, ancak enumlar henüz tanıtılmadı. Bunun yerine, en basit ilkel tür olanboolüzerinde eşleştirmeyi (matching) gösteriyoruz. -
Bu slayt, desen eşleştirmesinden (pattern matching) bahsetmeden
match’i tanıtıyor ve öğrencilere çok fazla bilgi yüklemeden sözdizimine (syntax) aşina olma şansı veriyor. Desen eşleştirmesi hakkında yarın daha detaylı konuşacağız, bu yüzden burada çok fazla detaya girmemeye çalışın.
Daha Fazlasını Keşfedin
-
matchkullanımını daha da motive etmek için, örnekleriifile yazılmış eşdeğerleriyle karşılaştırabilirsiniz. İkinci durumda, birboolüzerinde eşleme (matching) yapmak,if {} else {}bloğuna oldukça benzer. Ancak birden fazla durumu kontrol eden ilk örnekte, birmatchifadesiif {} else if {} else if {} elseifadesinden daha az ve öz olabilir. -
matchayrıca eşleşme filtrelerini (match guards) da destekler, bu da eşleşme kolunun (match arm) alınıp alınmaması gerektiğini belirlemek için değerlendirilecek keyfi bir mantıksal koşul (condition) eklemenize olanak tanır. Ancak eşleşme filtreleri hakkında konuşmak, bu slaytta kaçınmaya çalıştığımız desen eşleştirmesi (pattern matching) hakkında açıklama gerektirir.