Fonksiyonlar: Parametreler, Dönüş Tipleri ve statement vs expression

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Rust'ta fonksiyonlar programın temel yapı taşlarıdır ve fn anahtar kelimesi ile tanımlanırlar. Ancak Rust'ı diğer dillerden ayıran çok kritik bir fark vardır: Statement (İfade) ve Expression (Deyim) ayrımı.

1. Fonksiyon Tanımlama ve Parametreler​

Rust'ta fonksiyon ve değişken isimlerinde snake_case (küçük harf ve alt tire) kullanımı standarttır. Fonksiyon parametrelerinde tip belirlemek zorunludur.
Rust
Kod:
fn main() {
    selam_ver("Ahmet", 25);
}

fn selam_ver(isim: &str, yas: i32) {
    println!("Merhaba {}, {} yaşındasın.", isim, yas);
}

2. Statement (İfade) vs Expression (Deyim)​

Bu ayrım Rust'ın kalbidir ve fonksiyonların nasıl değer döndürdüğünü belirler.
  • Statements (İfadeler): Bir işlemi gerçekleştiren ancak geriye bir değer döndürmeyen talimatlardır. Sonunda ; (noktalı virgül) bulunur.
    • Örn: let x = 5; bir ifadedir. Değer döndürmediği için let y = (let x = 5); diyemezsiniz.
  • Expressions (Deyimler): Bir değer üreten/hesaplayan yapılardır. Rust kodunun büyük çoğunluğu deyimdir.
    • Örn: 5 + 6 bir deyimdir ve 11 değerini üretir.

3. Dönüş Tipleri ve "Implicit Return"​

Rust'ta bir fonksiyonun değer döndüreceğini -> işareti ile belirtiriz. Değer döndürmek için iki yol vardır:
  1. return anahtar kelimesi: Erken dönüşler için kullanılır.
  2. Implicit Return (Örtük Dönüş): Fonksiyonun son satırına noktalı virgül koymadan bir deyim yazarsanız, Rust o deyimin sonucunu otomatik olarak döndürür.
Rust
Kod:
fn topla(a: i32, b: i32) -> i32 {
    a + b // Noktalı virgül yok! Bu bir expression'dır ve otomatik döner.
}

fn kare_al(x: i32) -> i32 {
    if x == 0 {
        return 0; // Erken dönüş için 'return'
    }
    x * x // Fonksiyonun doğal sonucu
}
Dikkat: Eğer a + b; yazarsanız, bu bir ifadeye (statement) dönüşür ve fonksiyon değer döndüremez (hata alırsınız).

4. Kod Blokları da Birer Deyimdir​

Rust'ta {} ile oluşturulan süslü parantez blokları kendi başlarına birer deyim olabilir. Bu, değişkenlere karmaşık mantıklarla değer atarken çok kullanışlıdır:
Rust
Kod:
let y = {
    let x = 3;
    x + 1 // Blok bu değerle sonuçlanır
}; 

// y şimdi 4 oldu!

Özet Tablo​

ÖzellikAçıklama
Tanımfn fonksiyon_adi(parametre: Tip) -> DonusTipi { ... }
ZorunlulukParametre tiplerini belirtmek zorunludur.
Deyim (Expression)Değer üretir, sonunda ; yoktur.
İfade (Statement)İşlem yapar, sonunda ; vardır, değer döndürmez.
 
Geri
Üst