Fonksiyonlar
Tanımlama
Section titled “Tanımlama”Fonksiyonlar func anahtar kelimesi kullanılarak tanımlanır:
// Fonksiyon tanımıfunc topla(int a, int b) { return a + b;}Özyineleme (Recursion)
Section titled “Özyineleme (Recursion)”Tulpar özyinelemeli fonksiyonları destekler:
// Özyinelemeli fonksiyonfunc fibonacci(int n) { if (n <= 1) { return n; } return fibonacci(n - 1) + fibonacci(n - 2);}Fonksiyon Çağırma
Section titled “Fonksiyon Çağırma”// Fonksiyon çağırmaint toplam = topla(5, 3);int fib = fibonacci(10);Lambda’lar
Section titled “Lambda’lar”Lambda’lar => oku ile yazılan anonim fonksiyonlardır. Gövde tek bir ifade
veya bir blok olabilir. Bir değişkende saklayıp çağırabilir ya da değer olarak
dolaştırabilirsin:
// İfade gövdesivar topla = (int a, int b) => a + b;print(topla(2, 3)); // 5
// Blok gövdesivar kare = (int x) => { return x * x; };print(kare(5)); // 25
// Anında çağrılan (IIFE)int r = ((int a, int b) => a + b)(3, 4); // 7Closure’lar (Kapanışlar)
Section titled “Closure’lar (Kapanışlar)”Bir lambda (veya iç içe fonksiyon), tanımlandığı kapsamdaki değişkenleri yakalar. Yakalanan değişkenler dıştaki fonksiyon döndükten sonra da yaşar ve mutasyonlar paylaşılır — böylece sayaçlar, biriktiriciler ve fabrikalar kurabilirsin:
// Fabrika: her adder kendi `n`'ini yakalarfunc adder_yap(int n) { return (int x) => n + x;}
var ekle10 = adder_yap(10);var ekle100 = adder_yap(100);print(ekle10(5)); // 15print(ekle100(5)); // 105 (bağımsız yakalamalar)
// Mutasyonlu yakalama: bir sayaçfunc sayac_yap() { int sayi = 0; return () => { sayi = sayi + 1; return sayi; };}
var tik = sayac_yap();print(tik()); // 1print(tik()); // 2print(tik()); // 3