Merhabalar.

Geriye yeniden bir fonksiyon dönen fonksiyonlar ve parametre olarak fonksiyon alan fonksiyonlardan bahsedeceğim.

Bu tip fonksiyonlara higher order function ismini veriyoruz.

Şimdi nasıl yapıldığını görmeye çalışalım.

Öncelikle geri bir fonksiyon dönen fonksiyon yazacağız.

void main(){
  
  
}

Function YeniFonksiyon(){
  
  var f1 = (int a, int b) => a + b;
  return f1;
  
}

Görüldüğü üzere YeniFonksiyon isimli fonksiyon kendi içinde tanımlanmış bir fonksiyonu geriye değer olarak dönüyor.

Peki bu fonksiyonu çağırdığımızda nasıl kullanabileceğiz.

void main(){

print(YeniFonksiyon()(3,7));

}

Function YeniFonksiyon(){

  var f1 = (int a, int b) => a + b;
  return f1;

}
print(YeniFonksiyon()(3,7));

Ana fonksiyonun kendisi bir değer almadığı için parantezleri açıp kapatıyoruz. İçeriden bir fonksiyon geri döndüğünü bildiğimiz için o fonksiyonun parantezlerini açıyor ve değerlerini veriyoruz. Böylelikle sonucu almış oluyoruz.

Bunu şu şekilde de yapabilirdik.

void main(){

print(YeniFonksiyon()(3,7));

var f1 = YeniFonksiyon();
print(f1(6,7));

}

Function YeniFonksiyon(){

  var f1 = (int a, int b) => a + b;
  return f1;

}
var f1 = YeniFonksiyon();
print(f1(6,7));

Fonksiyon geriye bir fonksiyon döndüğü için bunu var tipli ya da function tipli değişkene alabiliriz.

Böylelikle f1 artık içerdeki fonksiyonu tutacaktır.

Böylece f1() yazıp doğru parametreleri geçersek bize sonucu verecektir.

H:\Dart_Tutorial\hello_dart\bin>dart 27_higher_order_functions.dart
10
13

Şimdi bir fonksiyone parametre olarak fonksiyon gönderme işlemini yapalım.

void main(){

print(YeniFonksiyon()(3,7));

var f1 = YeniFonksiyon();
print(f1(6,7));

DegerYaz("Murat", toplam);

}

Function YeniFonksiyon(){

  var f1 = (int a, int b) => a + b;
  return f1;

}

void DegerYaz(String isim, Function Toplam){

  print(isim);
  print("Toplam" + Toplam(9,5).toString());

}

int toplam(int a, int b){
  
  return a + b;
  
}
void DegerYaz(String isim, Function Toplam){

  print(isim);
  print("Toplam" + Toplam(9,5).toString());

}

int toplam(int a, int b){
  
  return a + b;
  
}

toplam diye bir fonksiyonumuz var.

DegerYaz isimli fonksiyon içinde bu fonksiyonu çağırıp kullanmak istiyoruz.

Bunun için

void DegerYaz(String isim, Function Toplam){

  print(isim);
  print("Toplam" + Toplam(9,5).toString());

}

DegerYaz fonksiyonuna parametre olarak bir Function geçiyoruz ve bir isim veriyoruz.

İçeride ise parametrelerini bildiğimiz için doğru parametreleri verip işlemi yapıyoruz.

Sonrasında bunu main metodu içinde aşağıdaki gibi çağırırız.

DegerYaz("Murat", toplam);

Burada fonksiyon kısmında yazmış olduğumuz toplam fonksiyonunu değer olarak geçiyoruz.

İşlem sonucu

H:\Dart_Tutorial\hello_dart\bin>dart 27_higher_order_functions.dart
10
13
Murat
Toplam14

Bu yazımızda bu kadardı.

Bir sonraki yazımda görüşmek üzere.


What's Your Reaction?

hate hate
0
hate
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win
Murat Bilginer
21 Şubat 1992 Doğumlu. Endüstri Mühendisi olarak Lisansını 2016 yılında tamamlamıştır. Industryolog Akademi - NGenius oluşumlarının kurucusudur. Şu anda kendi şirketi Brainy Tech ile hem Yazılım Hizmetleri Sunmakta Hem de Online Eğitimler Vermektedir.