Özet - Kontrol akışı
- Rust kursu
- Başlangıç
- Ders 41/115
- 5 dk
if, match ve döngüleri birleştirerek bir sayı tahmin oyunu yazarsın.
Kontrol akışı özeti
Karar: if/else if/else (koşul bool, ifade olarak değer üretir) ve match (kapsamlı, aralık ve | kalıpları). Döngü: loop (koşulsuz, break değer), while (koşullu), for (iteratör, ../..=, enumerate, rev). Akış: break, continue, etiketler ('dis).
for n in 1..=15 {
let s = match (n % 3, n % 5) {
(0, 0) => "FizzBuzz".to_string(),
(0, _) => "Fizz".to_string(),
(_, 0) => "Buzz".to_string(),
_ => n.to_string(),
};
print!("{s} ");
}Tuple ile match
Birden çok değeri aynı anda eşleştirmek için onları bir tuple içinde match'lemek okunur bir yoldur. _ o konumdaki değeri yok sayar:
match (gun_tatil, hava_guzel) {
(true, true) => "pikniğe git",
(true, false) => "film izle",
(false, _) => "işe git",
}Uygulama FizzBuzz
1'den 15'e kadar sayılar için tuple ile match (n % 3, n % 5) kullanarak FizzBuzz yazdır; değerleri tek satırda boşlukla ayırarak (print!) yazdır ve sonda println!() çağır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
for n in 1..=15 {
let s = match (n % 3, n % 5) {
(0, 0) => "FizzBuzz".to_string(),
(0, _) => "Fizz".to_string(),
(_, 0) => "Buzz".to_string(),
_ => n.to_string(),
};
print!("{s} ");
}
println!();
}Beklenen çıktı
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 FizzBuzz örneğinde <code>(0, 0)</code> kolu neden ilk sıradadır?
- match ilk eşleşen kolu çalıştırır; (0, _) önce olsaydı 15 "Fizz" olurdu Doğru cevap
- Alfabetik sıra
- Rust zorunlu tutar
- Sıra önemsizdir
Açıklama: Kollar yukarıdan aşağı denenir; en özel kalıp en üste yazılır.
2 Ters aralık
for i in (1..=5).____() {
print!("{i} "); // 5 4 3 2 1
}
for i in (1..=5).rev() {
print!("{i} "); // 5 4 3 2 1
}
Açıklama: rev() iteratörü sondan başa gezer.
3 Grubun özeti
| Kavram | Anlamı |
|---|---|
if |
İki yollu karar |
match |
Kapsamlı karar |
loop / while |
Koşulsuz / koşullu döngü |
for |
Iteratör döngüsü |