Çevreleyici Sözdizimi (Closure Syntax)

Çevreleyiciler (closures) dikey çubuklarla oluşturulur: |..| ...

fn main() {
    // Hafif sözdizimi (lightweight syntax) için, argüman ve geri dönüş türü çıkarımı yapılabilir:
    let double_it = |n| n * 2;
    dbg!(double_it(50));

    // Veya türleri belirtebilir ve tamamen açık (fully explicit) olmak için gövdeyi parantez içine alabiliriz:
    let add_1f32 = |x: f32| -> f32 { x + 1.0 };
    dbg!(add_1f32(50.));
}
This slide should take about 3 minutes.
  • Argümanlar |..| arasına girer. Gövde { .. } içine alınır., ancak tek bir ifade (expression) ise bunlar atlanabilir.

  • Argüman türleri isteğe bağlıdır ve eğer verilmezse türler çıkarım (inference) yapılır. Geri dönüş türü (return type) de isteğe bağlıdır, ancak yalnızca gövdenin etrafında { .. } varsa yazılabilir.

  • Örneklerin her ikisi de bunun yerine sadece iç içe fonksiyonlar olarak yazılabilir – çünkü bulundukları sözcüksel ortamdan (lexical environment) herhangi bir değişkeni yakalamazlar. Yakalamayı (capturing) bir sonraki adımda göreceğiz.

Daha Fazlasını Keşfedin

  • Fonksiyonları değişkenlerde saklama yeteneği sadece çevreleyicilere (closures) özgü değildir, düzenli (regular) fonksiyonlar da değişkenlere konulabilir ve ardından çevreleyicilerle aynı şekilde çağrılabilir: Deneme alanında (playground) örnek.

    • Bağlantısı verilen örnek ayrıca hiçbir şey yakalamayan (capture) çevreleyicilerin (closures) de düzenli bir fonksiyon göstericisine (regular function pointer) dönüştürülebileceğini (coerce) göstermektedir.