Değer bağlama
- Rust kursu
- Başlangıç
- Ders 84/115
- 4 dk
Kalıp değişkenleriyle eşleşen değeri bağlamayı öğrenirsin.
Değer bağlama
Kalıplar değerleri parçalayıp (destructure) değişkenlere bağlayabilir. Tuple, struct ve enum'lar aynı şekilde açılır:
let nokta = (3, 0);
match nokta {
(0, 0) => println!("merkez"),
(x, 0) => println!("x ekseni {x}"),
(0, y) => println!("y ekseni {y}"),
(x, y) => println!("{x},{y}"),
}Sabit kısımlar eşleşmeyi daraltır, değişken kısımlar değeri yakalar.
Struct açma ve @
Struct alanları adlarıyla açılır; .. kalan alanları yok sayar. ad @ kalıp ise hem kalıbı denetler hem değeri bağlar:
struct Oyuncu { ad: String, puan: u32 }
let o = Oyuncu { ad: String::from("Ece"), puan: 87 };
match o {
Oyuncu { puan: p @ 80..=100, .. } => println!("usta: {p}"),
Oyuncu { ad, .. } => println!("{ad} çalışmalı"),
}Uygulama Nokta sınıflandır
[(0, 0), (3, 0), (0, 5), (2, 2)] dizisini dolaş ve her noktayı match ile sınıflandır: merkez, x ekseni N, y ekseni N ya da x,y. Her sonucu ayrı satıra yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let noktalar = [(0, 0), (3, 0), (0, 5), (2, 2)];
for n in noktalar {
match n {
(0, 0) => println!("merkez"),
(x, 0) => println!("x ekseni {}", x),
(0, y) => println!("y ekseni {}", y),
(x, y) => println!("{},{}", x, y),
}
}
}Beklenen çıktı
merkez x ekseni 3 y ekseni 5 2,2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>match (0, 7) { (x, 0) => .., (0, y) => .., _ => .. }</code> hangi kola girer?
- (0, y) ve y = 7 Doğru cevap
- (x, 0) ve x = 0
- _
- Hiçbiri
Açıklama: İkinci eleman 0 olmadığı için ilk kol uymaz; ilk eleman 0 olduğu için ikinci kol uyar.
2 Aralığı bağla
match yas {
n ____ 0..=17 => println!("{n}: çocuk"),
n => println!("{n}: yetişkin"),
}
match yas {
n @ 0..=17 => println!("{n}: çocuk"),
n => println!("{n}: yetişkin"),
}
Açıklama: @ hem aralığı denetler hem eşleşen değeri n'ye bağlar.
3 Kalıp ve anlamı
| Kavram | Anlamı |
|---|---|
(x, 0) |
İkinci eleman 0, x bağlanır |
Oyuncu { ad, .. } |
Yalnızca ad alanı |
p @ 80..=100 |
Aralık + bağlama |
(_, y) |
İlki yok sayılır |