Predicate delegate

ยศภูมิ มณีจันทร์ 650710986

1.What is Predicate delegate in C#?

Predicate delegate เป็น method ในภาษา C# ที่รับค่า parameter เข้ามาหนึ่งตัว และทำการตรวสอบเงื่อนไข ใช้ในการ Fillter ข้อมูลก่อนจะ return ค่ากลับไปเป็นประเภท boolean (true,false)

using System;         
public class Program
{
        public static void Main()
        {
                Predicate<string> isUpper = IsUpperCase;
                bool result1 = isUpper("PROGRAMING LANGUAGE");
                bool result2 = isUpper("programing language");
                Console.WriteLine(result1);
                Console.WriteLine(result2);
        }
        public static bool IsUpperCase(string str)
        {
                return str.Equals(str.ToUpper());
        }
}

2.What is Predicate delegate in Java?

Predicate delegate ในภาษา JAVA คือ ฟังก์ชันที่จะรับค่ามาแล้วส่งกลับค่ามาเป็น Boolean (true,false) จะสามารถเจอได้ใน Java 8 ขึ้นไป

import java.util.function.Predicate;
public class main{
        public static void main(String[] args) {
                Predicate<Integer> isUpper = i -> i >= 65 && i <= 90;
                System.out.println("Is number 77 is upper character : " + isUpper.test(77));
                System.out.println("Is number 110 is upper character : " + isUpper.test(110));
        }
}

3.What is Predicate delegate in C/C++?

ไม่มีการใช้ Predicate delegate ในภาษา C/C++ เหมือนกับภาษา C#/Python แต่หากพูดถึงแนวคิดที่มีความคล้ายกันก็จะเป็นการใช้พอยต์เตอร์แทน

#include <stdio.h>
char check_upper(char c)
{
        int C=c;
        if(c >= 65 && c <= 90)
        {
                return 1;
        }
        else
        {
                return 0;
        }
}
void test(char c, char (*predicate)(char))
{
        if(predicate(c) == 1)
        {
                printf("Upper character result : true");
        }
         else if (predicate(c) == 0)
         {
                  printf("Upper character result : false");
         }
}
void main()
{
        char c;
        scanf("%c", &c);
        test(c, check_upper);
}

4.What is Predicate delegate in Python?

Lambda function เป็นฟังก์ชัน ที่สามารถสร้างและเก็บค่าไว้ในตัวแปร หรือส่งเป็นพารามิเตอร์ของฟังก์ชันอื่นได้โดยที่ไม่จำเป็นต้องประกาศชื่อ แต่เรายังาสามารถใช้มันได้เหมือนกับค่าอื่นๆ หนึ่งในภาษา Python

is_upper = lambda x: 65 <= ord(x) <= 90
result1 = is_upper('A')
print(result1)
result2 = is_upper('a') 
print(result2)

Different Predicate delegate in C# and other Language

  • Java : ในภาษา Java นั้นสามารถใช้ Predicate<T> ได้จึงไม่มีความแตกต่างกับการใช้ Predicate delegate ในภาษา C#

  • C/C++ : ไม่พบการใช้ Predicate delegate ในภาษา C/C++ แต่หากเราพูดถึงแนวคิดที่คล้ายกันกับ Predicate delegate ในภาษา C# ก็มีการใช้ Function pointer มาแทนกันได้

  • Python : ในภาษา Python นั้นไม่ได้ใช้ชื่อ Predicate delegate แต่ใช้ชื่อ Lambda function แทน ส่วนในเรื่องของการทำงานนั้นเหมือนกับ Predicate delegate ของ C#

Clip video for presentation

Slide for presentation

Reference

Last updated