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}"); }
-
match
kolları 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
match
kolunun 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. -
match
ifadelerinin 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 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
-
match
kullanımını daha da motive etmek için, örnekleriif
ile 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, birmatch
ifadesiif {} else if {} else if {} else
ifadesinden daha az ve öz olabilir. -
match
ayrıca eşleşme korumalarını (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 korumaları hakkında konuşmak, bu slaytta kaçınmaya çalıştığımız desen eşleştirmesi (pattern matching) hakkında açıklama gerektirir.