Lambda

5 min readMay 16, 2020

Lambda da bize java 8 ile birlikde gelib. Esas ustunluyu daha oxunaqli ve clean code verir bize ve functional programming istifade ede bilirsiz.

Lambda ifadelere eslinde anonim funksiyalarin qisa sekilde yazilisi da deye bilerik. Adlari yoxdur amma parametreri, return tipi , body-si ola biler ve hetta exception da throw ede bilerik.

Her hansi bir class-a bagli deyildirler ve her hansi class-in metodu deyiller. Lambda ile biz function-i bir variable kimi saxlayiriq sanki asagidaki kimi :

Daha duzgun lambda syntax formasi bucurdur :

Lambda-dan evvel anonymous class ile istfadeye baxaq:

Ve indi eyni sey lambda ile baxaq :

Bezi lambda basic syntax example-ler :

Bele bir interface-imiz oldugunu dusunek:

Bu zaman biz bu interface-i asagidaki kimi lambda ile istifade ede bilerik:

Eger parameter elave etsek yuxaridaki lambda ifademize xeta verecek cunki hemin interface-de parameterli method yoxdur :

Umumiyyetle lambda-da istifde ede bilmek ucun hemin interface-in yalniz bir metodu olmalidir cunki functional interfaclerin yalniz bir abstarct metodu ola biler. Functional interface-leri @FunctionalInterfce annotasyasi ile sign etmek olar amma mecburi deyil sadece tovsiye olunur.

Type Interface:

Biz fikir verin elave asagidaki kimi ifade yazib ordan getLength cagirmadiq

Cunki java compiler hemin bir metoda ve param tipelre return type esasen mueyyen edir ozu kodu.

Thread Runnable lambda ile :

Runnable-in yalniz bir metodu oldugu ucun burada biz lambda ile istfde ede bilerik yuxaridaki kimi ve ne qeder qisa ve oxunaqli oldugu ise goz onundedir.

Predicate, Consumer, Supplier, Bifunction ..

Lambda ile bezi example-lere ve Predicate istifadesine baxaq:

Predicate arqument alir ve geriye boolean netice return edir adeten hanisa sert verib datani filter etmek ucun istifade olunur.

Evvelce simple example-a baxaq :

Burada biz elave Condition interface yaradib onu print eden metodumuza param kimi set edib onun sertine esasen isleyirik ancaq biz bunun evezine Predicate de istfde ede bilerik ve generic oldugu ucun daha cox uygunluq verecek bize diger object type-lar da vermek olacaq:

Hemin example ile Consumer istifadesine baxaq:

Arqument alir ve netice return etmir sadece consume edir gonderilen datani.

Evvelce consumer simple istifadesine baxaq:

Indi beyaqki exampl-de consumer istifade edek , bu bize data-ni daha dinamik consume imkani verir lambda ile ozumuz set edtdiyimiz behaviour-a gore isleyecek :

Labmda daxilinde exception handling :

Ancaq bu halda eger diger bir Consumer alan metod olsa ve biz sabah onunla evez etsek gerek try catch-de deyisiklik edek. Bunun ucun ele metod daxilinde de try catch yazib istfde ede bielrsiz:

Foreach istifadesi :

Java 8- den foreach asagidaki kimi Consumer alma imkani oldugu ucun example-deki kimi foreach lambda ile rahat daha qisa sekilde istfde ede bilriik:

Supplier istifadesi :

Arqument almir ve netice return edir.

BiFunction istiafdesi :

Iki arqument alir ve geriye result return edir

Burada T ve U arqumentler , R ise result type-dir

--

--

No responses yet