Desenler ve Çözümlenme (Destructuring)
Demetler (tuples) ve diğer yapılandırılmış değerlerle (structured values) çalışırken, içteki değerleri yerel (local) değişkenlere çıkarmayı istemek yaygındır. Bu, doğrudan iç değerlere erişilerek elle yapılabilir:
fn print_tuple(tuple: (i32, i32)) { let left = tuple.0; let right = tuple.1; println!("sol: {left}, sağ: {right}"); }
Ancak, Rust daha büyük bir değeri kendisini oluşturan parçalara çözümlemek (destructure) için desen eşleştirmeyi (pattern matching) kullanmayı da destekliyor:
fn print_tuple(tuple: (i32, i32)) { let (left, right) = tuple; println!("sol: {left}, sağ: {right}"); }
This slide should take about 5 minutes.
- Burada kullanılan desenler "reddedilemez (irrefutable)"dir, yani derleyici
=
sağındaki değerin desenle aynı yapıya sahip olduğunu statik olarak doğrulayabilir. - Bir değişken adı, her zaman herhangi bir değerle eşleşen reddedilemez (irrefutable) bir desendir, bu nedenle tek bir değişkeni bildirmek için
let
'i kullanabiliriz. - Rust ayrıca koşullu ifadelerde desenlerin (patterns) kullanılmasını destekleyerek eşitlik karşılaştırmasının (comparison) ve çözümlenmenin (destructuring) aynı anda gerçekleşmesine olanak tanır. Bu desen eşleştirme stili daha sonra daha ayrıntılı olarak tartışılacaktır.
- Desenin (pattern) eşleştirilen değerle eşleşmediğinde oluşacak derleyici hatasını göstermek için yukarıdaki örnekleri düzenleyin.