First-class functions
- Dart kursu
- Başlangıç
- Ders 69/116
- 5 dk
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
void main() {
// apply fonksiyonunu tanımla
// çağrı ekle
}Örnek çözüm
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ü
var f = (n) => n * 2;
int Function(int) g = ____;
var f = (n) => n * 2;
int Function(int) g = f;
Açıklama: f bir fonksiyon değeridir, atama yapılabilir.