CodeBlanks Logo Icon CodeBlanks

Özet - Fonksiyonlar

Parametre, dönüş ve ifadeleri birleştirerek hesap fonksiyonları yazarsın.

Fonksiyonlar özeti

fn ad(param: Tür) -> Dönüş: parametre türleri zorunludur, dönüş değeri son ifadedir (noktalı virgülsüz), erken çıkış için return kullanılır. if, match ve bloklar değer üreten ifadelerdir. Birden çok değer tuple ile döner. Adlar snake_case yazılır.

fn istatistik(s: &[i32]) -> (i32, f64) {
    let toplam: i32 = s.iter().sum();
    (toplam, toplam as f64 / s.len() as f64)
}

Fonksiyon değeri olarak fonksiyon

Fonksiyonlar değer gibi bir değişkene atanabilir ya da başka fonksiyona verilebilir; türleri fn(i32) -> i32 biçimindedir:

fn ikiye(n: i32) -> i32 { n * 2 }
fn uygula(f: fn(i32) -> i32, x: i32) -> i32 { f(x) }

println!("{}", uygula(ikiye, 21));   // 42

Closure'lar (anonim fonksiyonlar) ileride bu fikri daha da güçlendirecek.

Uygulama İstatistik

Yukarıdaki istatistik(s: &[i32]) -> (i32, f64) fonksiyonunu yaz. let (t, o) = istatistik(&[2, 4, 9]); ile parçala ve println!("{t} {o}"); yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn istatistik(s: &[i32]) -> (i32, f64) {
    let toplam: i32 = s.iter().sum();
    (toplam, toplam as f64 / s.len() as f64)
}

fn main() {
    let (t, o) = istatistik(&[2, 4, 9]);
    println!("{t} {o}");
}

Beklenen çıktı

15 5

Soru ve cevaplar

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

1 <code>istatistik(&amp;[2, 4, 9])</code> ne döndürür?

  • (15, 5.0) Doğru cevap
  • (15, 5)
  • (5.0, 15)
  • 15

Açıklama: Toplam 15 (i32), ortalama 15 / 3 = 5.0 (f64); tuple sırası imzadaki gibidir.

2 Fonksiyon türü

Soru
fn uygula(f: ____, x: i32) -> i32 {
    f(x)
}
Cevap
fn uygula(f: fn(i32) -> i32, x: i32) -> i32 {
    f(x)
}

Açıklama: fn(i32) -> i32 bir i32 alıp i32 döndüren fonksiyon türüdür.

3 Grubun özeti

Kavram Anlamı
fn Tanım
-> T Dönüş türü
Son ifade Dönüş değeri
return Erken çıkış

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