Higher Order Function Nedir?
Selamlar 👋, bugün sizlere Higher Order Functions’ın ne olduğundan bahsettiğim bir yazı hazırladım. İyi okumalar.
🔹Peki Nedir Bu Higher Order Function?
Bir fonksiyona parametre olarak verebildiğimiz fonksiyon türüdür. Yani elimizde user fonksiyonu olduğunu varsayalım. Bu fonksiyonun body kısmına başka bir fonksiyonu vermeye biz Higher Order Function diyoruz.
Ancak bir fonksiyonu başka bir fonksiyona parametre olarak vermek demek şu demek değildir:
Çünkü burada userInfo’nun geri dönüş değeri user fonksiyonuna verilir. Ancak Higher Order fonksiyonu tanımında fonksiyon body’sine bir fonksiyonu vermekten bahsettik.Yapısına bakacak olursak:
🔸Higher Order fonksiyonları tanımlamanın farklı yolları vardır. Bunlar:
1️⃣ Bir değişkene atayarak Higher Order fonksiyon tanımlayabiliriz. Lambda okundan önce Higher Order fonksiyonun aldığı parametreler yazılır.
2️⃣ Anonymous fonksiyon kullanılarak da normal bir fonksiyona Higher Order parametre olarak verilebilir.
Normalde fun keyword’ünden sonra fonksiyon adı belirtirdik. Ancak Anonymous fonksiyonlarda, fonksiyon ismi belirtilmiyor.
- Aynı şekilde Anonymous fonksiyonun expression kullanımı ile de foksiyona parametre olarak Higher Order fonksiyon verilebilmekte.
3️⃣ Eğer normal bir fonksiyon Higher Order fonksiyon ile aynı parametre sayısına sahip ve parametre tipleri de aynıysa bu fonksiyon Higher Order fonksiyon olarak normal bir fonksiyona parametre olarak verilebilmektedir. Fonksiyon başına “::” işareti koyularak gerçekleştirilir.
NOT: Higher Order fonksiyonun içine parametre olarak yine bir Higher Order fonksiyon verilebilir.
❗️❗❗️ NOT: Normal bir fonksiyona Higher Order fonksiyon parametre olarak vermişse ve bu fonksiyonun önüne “inline” keyword’nü koyarsak:
- Interface’lere kıyasla daha performanslı çalışır. Neden?
Higher Order fonksiyonu değil de interface kullanmış olsaydık:
Arka planda ne kadar çağrım yapılıyorsa o kadar nesnesi oluşturuldu.(Interface’lerin nesnesi oluşturulamaz olarak biliyoruz ❗️) Ancak Higher Order’ı parametre alan fonksiyonun başına inline keyword’nü koyduğumuzda Higher Order fonksiyonu için ne kadar çağrım yapılırsa yapılsın arka planda çağrım sayısı kadar nesnesi oluşturulmaz. Böylece memory’de de boşa yer kaplama gibi bir durum söz konusu değildir.
gif kaynak : The End GIF by Eminem — Find & Share on GIPHY (2022). Available at: https://giphy.com/gifs/eminem-my-name-is-the-slim-shady-lp-3ohs86vZAWiJXWvQI0