CodeBlanks Logo Icon CodeBlanks

if let

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

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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

Soru
____ Some(n) = ayar {
    println!("Seviye {n}");
}
Cevap
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ç

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma