High Order fonksiyonlar

Özgür Can
2 min readJun 3, 2020

Merhaba arkadaslar bugün size “High Order” fonksiyonlardan bahsedeceğim..

High order fonksiyonlar functional programing dediğimiz programlama dilinin bir özelliği aslında. High order fonksiyonlar da basit olarak “Bir fonksiyonun parametre olarak başka bir fonksiyonda alması”. Nesne yönelimli programlama da aslında böyle bir kavramla çok karşılaşmazsınız.Bir fonksiyon ne yapar;Int,String,Boolean gibi yada kendi bilerlediğimiz veritiplerini alır ve geriye yine bizim belirlediğimiz ınt,string.. döndürür.

High level fonksiyonlar da ise fonksiyonlarımız bu değişkenleri alabildiği gibi başka bir fonksiyonu da parametre olarak alıp,başka bir fonksiyonu da değer olarak döndürebiliyor.

O zaman parametre olarak fonksiyon alabilir,geriye fonksiyon döndürebilir veya ikisini de döndürebilir diyebiliriz..

Şimdi ilk olarak for döngüsü ile bir liste yapalım içerisinde öğrencinin bildiği diller olsun.

for döngüsü bize bu listeyi çevirdi. Listeleri gezerken başka bir yöntem daha var “forEach”. Ne yapar bu forEach.. Artık gezilen listede ne varsa Int’se ınt String’se Stringi her döngüde alır,yazdırır.

it burda her bir değeri temsil ediyor.

Burda kullanım şu şekilde de olabilir. “forEach(it -> println(it*it)). Icerde bir fonksiyon islemi oldugunu bilin yani.

Normal şartlarda forEach(parametreyi yazdığımız yer).forEach bir fonksiyon iken Bizde gittik ekrana başka birşey yazdıracak farklı bir fonksiyon tanımladık.Burda forEach ne oluyor “High funciton” oluyor.

Bir lambda örneği ile devam edeceğim.

Sınıf classından bir nesne türettik.. Bir sonraki işlemde herhangi bir fonksiyon tanımlamadım..Burda bir fonksiyonu değişkene atıyorum..

Tıpkı “var sayi =5” gibi. Bu mantığı anladıysanız konu kilit :)

Nasıl 5 degerini sayi’ya atıyorsam “lambdaToplama” degiskeninede toplama işlemini atadım..Burda önemli bir şey yukarıda action olarak ne verdiysen aşşağıdaki değişkene atadığın fonksiyona da onu vermelisin.Ve bir Int deger döndürmeli.. Mesela “b:String” dersen sana tip uyumsuzluğu hatası verecektir.

Anladığınızı düşünüyorum fakat yine bir de hazır olan fonksiyonlardan kullanarak String bir örnek daha yapıp bitireceğim..

1- Fonksiyon String bir değer aldı. 2-Yeni fonksiyonumuzu bir değişkene atadık 3-Aşağıda high order kullanım ile tanımladık.

Umarım mantık anlaşılmıştır. Buraya kadar okuyanlar için teşekkür ediyorum. Faydalı olduysa ne mutlu :) Diğer makalelerde görüşmek dileğiyle

--

--