if let
- Rust kursu
- Başlangıç
- Ders 85/115
- 4 dk
if let ile tek bir kalıbı kısaca eşleştirirsin.
if let
Yalnızca tek bir kalıpla ilgileniyorsan match yerine if let daha kısadır; diğer durumlar else'e düşer:
let ayar: Option<u32> = Some(8);
if let Some(n) = ayar {
println!("Seviye {n}");
} else {
println!("Varsayılan");
}Bedeli: match'in tüm durumları denetleme garantisi kaybolur. Birden çok variant varsa match tercih et.
let-else
Değer yoksa fonksiyondan erken çıkmak için let ... else kullanılır; else bloğu mutlaka çıkmalıdır (return, break, continue ya da panic):
fn ilk_harf(s: &str) -> char {
let Some(c) = s.chars().next() else {
return '?';
};
c.to_ascii_uppercase()
}
println!("{} {}", ilk_harf("rust"), ilk_harf("")); // R ?Böylece mutlu yol girintisiz kalır.
Uygulama Ayar oku
let ayar: Option<u32> = Some(8); ve let bos: Option<u32> = None; tanımla. Her biri için if let Some(n) ile Seviye N, değilse Varsayılan yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let ayar: Option<u32> = Some(8);
let bos: Option<u32> = None;
for a in [ayar, bos] {
if let Some(n) = a {
println!("Seviye {}", n);
} else {
println!("Varsayılan");
}
}
}Beklenen çıktı
Seviye 8 Varsayılan
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>if let Some(n) = x</code> hangi <code>match</code> ile eşdeğerdir?
- match x { None => { .. } }
- match n { Some(x) => .. }
- Eşdeğeri yok
- match x { Some(n) => { .. }, _ => {} } Doğru cevap
Açıklama: if let, tek kolu olan ve kalanları yok sayan bir match'in kısaltmasıdır.
2 Tek kalıp
____ Some(n) = ayar {
println!("Seviye {n}");
}
if let Some(n) = ayar {
println!("Seviye {n}");
}
Açıklama: if let tek bir kalıp uyarsa bloğu çalıştırır.
3 Yapı ve kullanım yeri
| Kavram | Anlamı |
|---|---|
match |
Tüm durumlar |
if let |
Tek kalıp |
let-else |
Erken çıkış |
matches! |
bool sonuç |