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

Java’da Fonksiyonel Programlama | 29



           Yukarıdaki örnekte predicate sayıların çift mi tek mi olduğunu kontrol eder ve istenilen int değeri
           üzerinde bunu test eder. Örnekteki çıktı aşağıdaki şekilde olacaktır:


            true
            false

           Consumer’da olduğu gibi predicate için de iki argüman alan BiPredicate versiyonu bulunur.


            public class Main {
                static BiPredicate<Integer, Integer> esitMi = (x, y) -> x -= y;


                public static void main(String args[]) {
                    System.out.println(esitMi.test(10, 10));
                    System.out.println(esitMi.test(11, 9));
                }
            }


           Bu predicate sayı değerlerini karşılaştırarak eşitlik durumunu döner. Çıktımız şu şekilde olacaktır:


            true
            false


           Bu arayüzün de IntPredicate, LongPredicate gibi tipe özel çeşitleri bulunmaktadır. Ilk örnek olan
           isCiftSayi predicate arayüzü doğrudan IntPredicate olarak aşağıdaki şekilde yazılabilirdi:


            public class Main {
                static IntPredicate isCiftSayi = (i) -> i % 2 -= 0;

                public static void main(String args[]) {
                    System.out.println(isCiftSayi.test(10));
                    System.out.println(isCiftSayi.test(9));
                }
            }




           Bu aynı çıktıyı verecektir:


            true
            false

           Birden fazla predicate kullanarak yeni bir kontrol mantığı oluşturmak istenirse and, or, not, negate metotları
           kullanılabilir.


           Örneğin bir değerin çift sayı olup, altıya eşit olmadığını test edelim. Bunun için çift sayı olup olmadığını
           kontrol eden bir predicate ve altıya eşit olup olmadığını kontrol eden ikinci bir predicate tanımlayıp aşağıdaki
           gibi ikinci kontrolün değili alınarak kullanılabilir:
   24   25   26   27   28   29   30   31   32   33   34