Page 30 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 30

30 |  Java’da Fonksiyonel Programlama




            Predicate<Integer> ciftSayi = sayi -> sayi % 2 -= 0;
            Predicate<Integer> altiyaEsit = sayi -> sayi -= 6;
            Predicate<Integer> ciftSayiVeAltiyaEsitDegil = ciftSayi.and(altiyaEsit.
            negate());


            System.out.println(ciftSayiVeAltiyaEsitDegil.test(3));
            System.out.println(ciftSayiVeAltiyaEsitDegil.test(6));
            System.out.println(ciftSayiVeAltiyaEsitDegil.test(4));


           Bu kontrolün çıktısı da aşağıdaki gibi olacaktır:

            false
            false
            true

           3.4. Function


           Function  fonksiyon  demektir  ve  bu  fonksiyonel  arayüz  tipi    matematikteki  fonksiyon  gibi
           düşünülebilir. Argüman üzerinde gerekli işlemleri yapıp herhangi bir tipte veri döner. Arayüzde
           tanımlı  apply  metodu  ile  argüman  fonksiyona  sokulabilir.  Kendi  dışındaki  hiçbir  değişkenin
           durumunu  etkilemeyen  ve  kendi  dışındaki  şeylerden  etkilenmeyen  fonksiyonlara  saf  (pure)
           fonksiyon denir. Character tipinde veri alıp işlem sonrası Integer veri dönen örnek bir fonksiyon şu

           şekilde tanımlanabilir:





            public class Main {
                static Function<Character, Integer> karakterinIntDegeriniGetir =
                        (ch) -> Character.getNumericValue(ch);


                public static void main(String args[]) {
                    System.out.println(karakterinIntDegeriniGetir.apply(‘a’));
                    System.out.println(karakterinIntDegeriniGetir.apply(‘b’));
                }
            }



           Bu çıktı olarak karakterlerin Integer değerleri olan aşağıdaki çıktıyı verecektir:



            10
            11


           Bu  arayüzün  de  iki  argümanlı  hali  olan  BiFunction  öntanımlı  olarak  bulunmaktadır.  BiConsumer
           için verilen örnekte konsola yazdırılan String değerini, doğrudan dönen bir BiFunction şu şekilde
           tanımlanabilir ve kullanılabilir:
   25   26   27   28   29   30   31   32   33   34   35