Ç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.)); }
-
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.