Closure sözdizimi
- Rust kursu
- Orta seviye
- Ders 42/115
- 4 dk
|param| gövde sözdizimiyle closure tanımlarsın.
Closure sözdizimi
Closure, bir değişkene atanabilen ya da fonksiyona verilebilen adsız fonksiyondur. Parametreler dikey çizgiler arasına yazılır; tek ifadelik gövdede süslü parantez gerekmez:
let kare = |x: i32| x * x;
let topla = |a: i32, b: i32| a + b;
let selam = || println!("merhaba");
let uzun = |x: i32| {
let y = x * 2;
y + 1
};Closure'lar normal fonksiyon gibi çağrılır: kare(4). Fonksiyonlardan farkı, tanımlandıkları ortamdaki değişkenleri yakalayabilmeleridir.
Fonksiyonlarla karşılaştırma
Aynı işi yapan fonksiyon ve closure:
fn kare_fn(x: i32) -> i32 { x * x }
let kare_cl = |x: i32| -> i32 { x * x };
let kare_kisa = |x| x * x; // türler çıkarılırFonksiyon imzalarında tür zorunludur çünkü API'nin parçasıdır; closure'lar çoğunlukla kısa ömürlü ve yereldir, bu yüzden türler çıkarılabilir. Ortamı yakalamayan closure'lar fn işaretçisine de dönüşebilir.
Uygulama İlk closure'lar
kare (|x: i32| x * x) ve topla (|a: i32, b: i32| a + b) closure'larını tanımla. kare(4) ve topla(2, 3) sonuçlarını boşlukla yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let kare = |x: i32| x * x;
let topla = |a: i32, b: i32| a + b;
println!("{} {}", kare(4), topla(2, 3));
}Beklenen çıktı
16 5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Parametresiz bir closure nasıl yazılır?
- () => ifade
- fn() ifade
- |_| ifade
- || ifade Doğru cevap
Açıklama: || boş parametre listesidir; |_| ise bir parametre alıp yok sayar.
2 Parametre listesi
let kare = ____ x * x;
let kare = |x: i32| x * x;
Açıklama: Closure parametreleri dikey çizgiler arasına yazılır.
3 Closure ve sonucu
| Kavram | Anlamı |
|---|---|
(|x: i32| x * x)(4) |
16 |
(|a: i32, b: i32| a + b)(2, 3) |
5 |
(|| 7)() |
7 |
(|x: i32| x - 1)(0) |
-1 |