CodeBlanks Logo Icon CodeBlanks

İfade ve deyim

İfade (expression) ve deyim (statement) farkını öğrenirsin.

İfade ve deyim

Rust'ta deyim (statement) bir iş yapar ama değer üretmez (let x = 5;); ifade (expression) bir değer üretir (5 + 1, kare(3), if ..., { ... }). İfadenin sonuna noktalı virgül koymak onu deyime çevirir.

let y = {
    let x = 3;
    x + 1        // bloğun değeri: 4
};
println!("{y}");

Bu yüzden let x = (let y = 6); geçersizdir: let bir değer üretmez.

match de bir ifadedir

Bir değeri sınıflandırıp sonucu doğrudan bir değişkene atamak için match ifadesi kullanılır:

let puan = 72;
let harf = match puan {
    90..=100 => 'A',
    70..=89 => 'B',
    50..=69 => 'C',
    _ => 'F',
};
println!("{harf}");   // B

Tüm kollar aynı türü döndürmelidir; derleyici aksi hâlde hata verir.

Uygulama Harf notu

fn harf(puan: u32) -> char fonksiyonunu bir match ifadesiyle yaz: 90–100 'A', 70–89 'B', 50–69 'C', diğerleri 'F'. harf(95), harf(72) ve harf(30) sonuçlarını tek satırda yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn harf(puan: u32) -> char {
    match puan {
        90..=100 => 'A',
        70..=89 => 'B',
        50..=69 => 'C',
        _ => 'F',
    }
}

fn main() {
    println!("{} {} {}", harf(95), harf(72), harf(30));
}

Beklenen çıktı

A B F

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdakilerden hangisi bir ifadedir?

  • fn f() {}
  • use std::io;
  • { let a = 2; a * a } Doğru cevap
  • let a = 2;

Açıklama: Blok son ifadesinin değerini üretir (4); diğerleri değer üretmeyen bildirim ve deyimlerdir.

2 İfade olarak if

Soru
let durum = ____ yas >= 18 { "yetişkin" } else { "çocuk" };
Cevap
let durum = if yas >= 18 { "yetişkin" } else { "çocuk" };

Açıklama: if bir ifadedir; seçilen kolun değeri doğrudan değişkene atanır.

3 Kod ve tür

Kavram Anlamı
let x = 5; Deyim
5 + 1 İfade
{ x + 1 } Değer üreten blok
x + 1; Değeri atılan deyim

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