Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Desenler ve Eşleştirme

Desenler (patterns), Rust’ta hem karmaşık hem de basit türlerin yapısıyla eşleştirme yapmayı sağlayan özel bir sözdizimidir. Desenleri match ifadeleri ve diğer yapılarla birlikte kullanmak, programın kontrol akışı üzerinde size daha fazla denetim sunar. Bir desen aşağıdaki bileşenlerin bir birleşiminden oluşabilir:

  • Hazır değerler (literals)
  • Ayrıştırılmış (destructured) diziler, enum’lar, struct’lar veya demetler
  • Değişkenler
  • Joker desenler (wildcards)
  • Yer tutucular (placeholders)

Örnek desenler arasında x, (a, 3) ve Some(Renk::Kirmizi) sayılabilir. Desenlerin geçerli olduğu bağlamlarda bu bileşenler verinin şeklini tarif eder. Ardından programımız, değerleri bu desenlerle eşleştirerek belirli bir kod parçasını çalıştırmaya devam etmek için elindeki verinin doğru şekle sahip olup olmadığını belirler.

Bir deseni kullanmak için onu bir değerle karşılaştırırız. Desen değerle eşleşirse kodumuzda değerin parçalarını kullanırız. Bölüm 6’daki madeni para ayırma makinesi örneği gibi desen kullanan match ifadelerini hatırlayın. Değer desenin şekline uyuyorsa adlandırılmış parçaları kullanabiliriz. Uymuyorsa desenle ilişkili kod çalışmaz.

Bu bölüm, desenlerle ilgili her şey için bir başvuru kılavuzu niteliğindedir. Desenleri kullanmanın geçerli olduğu yerleri, çürütülebilir (refutable) ve çürütülemez (irrefutable) desenler arasındaki farkı ve karşılaşabileceğiniz farklı desen sözdizimi türlerini ele alacağız. Bölümün sonunda pek çok kavramı açık ve anlaşılır bir biçimde ifade etmek için desenleri nasıl kullanacağınızı biliyor olacaksınız.

Not: Rust’ta desen eşleştirme aynı anda iki temel görevi yerine getirir: verinin belirli bir şekle uyup uymadığını sınamak ve uyuyorsa içindeki alanları ayrıştırarak (destructuring) değişkenlere bağlamak. Üstelik desenler Rust’ın sahiplik kurallarıyla doğrudan bütünleşiktir: Copy olmayan bir değeri desende bir değişkene bağladığınızda sahiplik taşınır; referans üzerinden eşleştirme yaptığınızda ise derleyici bağlanan değişkenleri otomatik olarak referans (&T veya &mut T) hâline getirir.