CodeBlanks Logo Icon CodeBlanks

First-class functions

Fonksiyonları değer olarak geçmeyi öğrenirsin.

First-class functions

Dart'ta fonksiyonlar birer değerdir: bir değişkene atanabilir, başka bir fonksiyona parametre olarak geçirilebilir ya da dönüş değeri olabilir. Buna first-class olma denir.

Örnek: int Function(int) f = (n) => n * 2;. Burada f bir fonksiyon tutar; f(5) çağrısı 10 verir. Tür imzası int Function(int) 'int alıp int döndüren fonksiyon' demektir.

Başka bir fonksiyona parametre olarak verildiğinde buna callback denir. Örneğin apply(f, 5) bir fonksiyon ve bir değer alır, fonksiyonu değer üzerinde uygular. Bu, callback ve higher-order fonksiyonların temelidir.

Callback ve higher-order

Bir fonksiyonu parametre olarak alan fonksiyona higher-order denir. Örnek: void apply(int Function(int) f, int x) { print(f(x)); }. Bu, f'i x üzerinde uygular ve sonuçu yazdırır.

Parametre olarak verilen fonksiyona callback denir. Çağıran taraf, işini bitirdiğinde bu callback'i çağırır. Dart'ta List.map, List.forEach gibi metotlar callback alır.

Bu desen, kodun parçalarını değiştirmeyi kolaylaştırır: farklı f vererek aynı apply fonksiyonunu yeniden kullanabilirsin. Bu, kod tekrarını azaltır.

Uygulama apply fonksiyonu

Bir apply higher-order fonksiyonu tanımla: void apply(int Function(int) f, int x). Gövdesi print(f(x)) yapsın. main içinden apply((n) => n * 3, 5) çağrısı ekle.

Başlangıç kodu

main.dart
void main() {
  // apply fonksiyonunu tanımla

  // çağrı ekle
}

Örnek çözüm

main.dart
void apply(int Function(int) f, int x) {
  print(f(x));
}

void main() {
  apply((n) => n * 3, 5);
}

Beklenen çıktı

15

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 int Function(int) ne demektir?

  • int döndüren fonksiyon
  • iki int parametre
  • int alıp int döndüren fonksiyon Doğru cevap
  • int listesi

Açıklama: int Function(int) int alıp int döndüren fonksiyon türüdür.

2 First-class kavramları eşleştir

Kavram Anlamı
int Function(int) Fonksiyon türü
(n) => n * 2 Anonim fonksiyon
f(5) Fonksiyon çağrısı
apply(f, 5) Higher-order çağrı

3 Fonksiyon türü

Soru
var f = (n) => n * 2;
int Function(int) g = ____;
Cevap
var f = (n) => n * 2;
int Function(int) g = f;

Açıklama: f bir fonksiyon değeridir, atama yapılabilir.

Başlangıç bölümündeki tüm dersler