Java 8 ile beraber Lambda expression geldiğini biliyoruz. Bu nedir, nasıl kullanılır?
comments
1 references
// Comments are closed.
Java 8 ile beraber Lambda expression geldiğini biliyoruz. Bu nedir, nasıl kullanılır?
// Comments are closed.
Lambda expression konusunu kaynaklarından okuduğum zaman bir kerede anlayabileceğim bir tanım bulamadım. Bunun yerine sürekli açıklamalar var. Benim anladığım; bir fonksiyonun parametresini veya geri dönüş değerini sadece sınıf bazlı ya da ilkel veri tipleriyle sınırlı tutmayarak, kod veya fonksiyon da geçirmeye veya geri döndürmeye yarayan bir alt yapı oluyor. Aslında lisp/javascript/pyhton gibi dillerde daha önceden de olan bir yapı. Fonksiyon pointer kullanarak C üzerinde de yapılabilir.
Bir örnek üzerinden ilerleyelim. Java’da Collections.sort diye bir metod var. Kısaca tanımı elimizdeki collection içinde sıralama yapar. Bu metod ilk değer olarak sıralanacak collection nesnesini alır. Eğer sıralanacak nesne comparable arayüzünü gerçekleştiriyorsa sıkıntı yok. Gerçekleştirmiyorsa ikinci değer olarak da nasıl sıralama yapabileceğini anlamak için bir comparator alıyor. Buraya kadar herşey normal. Comparator arayüzü üzerinden çalıştığı için orada bu arayüz gerçekleştirilebilir. Örnek bakalım.
Burada bir comparator arayüzünü gerçekleştiriyor ve sıralattırabiliyoruz. Burada sort metoduna ikinci parametre olarak kod değil gerçekleştirimi yapılmış arayüz ile anonim sınıf gönderiyoruz. Java 8 ile birlikte sort metodu artık lambda expression kabul ediyor. Artık buraya bir arayüz gerçekleştirimi yerine direk fonksiyon yazılabilir. (Aslında yine bir arayüz gerçekleştirerek işlem devam ediyor ama detaylar bizden saklanmış oluyor. Bize sanki fonksiyonu yazıyoruz gibi geliyor, o kısmı biraz detaya giriyor, şu an sadece hazır kullanım üzerinden örneklendiriyoruz)
Şimdi lambda ile aynısı nasıl yapılıyor ona bakalım:
Burada artık daha basit bir yazım şekliyle bu işlemi tamamlayabiliyoruz. Aslında yaptığımız iş pek değişmedi, yazımı kolaylaştı. Asıl bizi rahatlatan işler (sanıyorum katılan arkadaşlar olacaktır); collections üzerinde map, filter gibi işlemler. Artık daha kolay yapılacak durumda.
Umarım açıklayıcı olmuştur.