Match Koruyucuları ve Bağlamaları
Koşullar ekleyip değerleri yakalayın.
Match Koruyucuları ve Bağlamaları, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
Match Koruyucusu Nedir?
Match koruyucusu, bir eşleştirme koluna eklenen fazladan bir if koşuludur. Kol yalnızca desen eşleştiğinde ve koşul doğru olduğunda çalışır.
Bu, bir varyantı taşıdığı verilere göre daha küçük durumlara ayırmanızı sağlar.
match number {
Some(n) if n > 0 => println!("positive"),
Some(n) => println!("zero or negative"),
None => println!("no number"),
}Koruyucu Söz Dizimi
Önce deseni, ardından if condition ve sonra => yazın. Koşul, desenin bağladığı tüm değişkenleri kullanabilir.
Koruyucu yanlışsa Rust sonraki kolu denemeye geçer.
fn main() {
let n = 4;
match n {
x if x % 2 == 0 => println!("even"),
_ => println!("odd"),
}
}Enum Verileriyle Koruyucular
Koruyucular, veri taşıyan enum'larla en kullanışlı hâle gelir. İçteki değeri bağlar, ardından onu sınarsınız.
Burada pozitif ve negatif bakiyeler, ikisi de aynı varyant olmasına rağmen farklı mesajlar alır.
enum Account {
Balance(i32),
Closed,
}
fn main() {
let a = Account::Balance(-5);
match a {
Account::Balance(b) if b < 0 => println!("overdrawn"),
Account::Balance(b) => println!("balance {}", b),
Account::Closed => println!("closed"),
}
}Sıra Hâlâ Önemli
Kollar yukarıdan aşağıya denendiği için daha özel koruyuculu kolu genel kolun önüne koyun.
Düz Balance(b) kolu önce gelseydi her şeyi eşleştirir ve koruyuculu kol hiç çalışmazdı.
Değişmez Değerleri Eşleştirme
Koruyucu kullanmadan, desen içinde doğrudan belirli değişmez değerlerle de eşleştirme yapabilirsiniz.
Burada 0 ve 1 tam olarak eşleştirilir, geri kalanını ise _ ele alır.
fn main() {
let n = 1;
match n {
0 => println!("zero"),
1 => println!("one"),
_ => println!("many"),
}
}Aralıkları Eşleştirme
Desenler, her iki ucu da kapsayan ..= ile bir değer aralığını eşleştirebilir.
Bu, birden fazla karşılaştırma koruyucusuna temiz bir alternatiftir.
fn main() {
let score = 85;
match score {
0..=59 => println!("fail"),
60..=100 => println!("pass"),
_ => println!("out of range"),
}
}@ Operatörüyle Bağlama
@ operatörü, bir değeri bir desene karşı sınamanızı ve aynı anda onu bir ada bağlamanızı sağlar.
Burada id @ 1..=5 aralığı denetler ve yazdırabilmeniz için gerçek değeri id içinde saklar.
fn main() {
let n = 3;
match n {
id @ 1..=5 => println!("small id {}", id),
other => println!("other {}", other),
}
}Değerin Tamamını Bağlama
Yukarıdaki other gibi bir desendeki yalın ad, değerin tamamını bağlar. Bu ad, yine de kullanabileceğiniz bir her durumu karşılayan desen gibi davranır.
Değeri yok saymak istediğinizde _, değere ihtiyaç duyduğunuzda ise bir ad kullanın.
fn main() {
let n = 99;
match n {
0 => println!("zero"),
value => println!("got {}", value),
}
}Koruyucularla Bağlamaları Birlikte Kullanma
Kesin bir denetim için bağlamayı koruyucuyla birleştirebilirsiniz: veriyi bağlayın, ardından bir koşul ekleyin.
Bu program büyük ve çift bakiyeleri özel olarak işaretler.
enum Account {
Balance(i32),
}
fn main() {
let a = Account::Balance(200);
match a {
Account::Balance(b) if b > 100 && b % 2 == 0 => println!("big even {}", b),
Account::Balance(b) => println!("normal {}", b),
}
}Birden Çok Desen Üzerinde Koruyucular
Bir kol desenleri | ile birleştirse bile koruyucu kolun tamamına uygulanır.
Koşul, listelenen desenlerden herhangi biri eşleştikten sonra denetlenir.
fn main() {
let n = 6;
match n {
2 | 4 | 6 if n > 3 => println!("big even"),
_ => println!("other"),
}
}Hepsini Bir Araya Getirme
Bu son program, bir sıcaklık okumasını sınıflandırmak için verili varyantları, bir bağlamayı, bir koruyucuyu ve her durumu karşılayan bir deseni birleştirir.
Farklı kolların çalıştığını görmek için değeri değiştirip programı yeniden çalıştırın.
enum Reading {
Temp(i32),
Missing,
}
fn main() {
let r = Reading::Temp(38);
match r {
Reading::Temp(t) if t >= 38 => println!("fever: {}", t),
Reading::Temp(t) => println!("normal: {}", t),
Reading::Missing => println!("no reading"),
}
}Kısa Kontrol
Koruyucuları ve bağlamaları anlayıp anlamadığınızı kontrol edin.
Özet
Eşleştirmeleri koruyucularla (pattern if condition) daha hassas hâle getirmeyi, değişmez değerleri ve aralıkları (..=) eşleştirmeyi, ayrıca adlarla veya @ operatörüyle bağlamalar oluşturmayı öğrendiniz.
Önceki tüm konularla birlikte artık sabit durum kümelerini modelleyebilir, bunlara veri ekleyebilir ve her duruma kesin biçimde tepki verebilirsiniz. Enum'lar ve match konusunda harika ilerlediniz!
Sıkça Sorulan Sorular
“Match Koruyucuları ve Bağlamaları” dersi ücretsiz mi?
Evet — “Match Koruyucuları ve Bağlamaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“Match Koruyucuları ve Bağlamaları” dersinde ne öğreneceğim?
Koşullar ekleyip değerleri yakalayın. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Match Koruyucuları ve Bağlamaları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İlk Enum'unuzu Tanımlama
- Enum Varyantlarıyla Eşleştirme
- Veri İçeren Enum'lar
- Match Koruyucuları ve Bağlamaları