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
Rust
Rust
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çinlet y = (let x = 5);diyemezsiniz.
- Örn:
- Expressions (Deyimler): Bir değer üreten/hesaplayan yapılardır. Rust kodunun büyük çoğunluğu deyimdir.
- Örn:
5 + 6bir deyimdir ve11değerini üretir.
- Örn:
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:returnanahtar kelimesi: Erken dönüşler için kullanılır.- 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.
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ğera + 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
| Özellik | Açıklama |
| Tanım | fn fonksiyon_adi(parametre: Tip) -> DonusTipi { ... } |
| Zorunluluk | Parametre tiplerini belirtmek zorunludur. |
| Deyim (Expression) | Değer üretir, sonunda ; yoktur. |
| İfade (Statement) | İşlem yapar, sonunda ; vardır, değer döndürmez. |