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
Link for learning C# : https://www.tutorialsteacher.com/csharp/csharp-predicate/
Link for learning Java : https://codegym.cc/th/groups/posts/th.419.java-phe-rdikhet-phrxm-tawxyang
Link for learning Python : https://marcuscode.com/lang/python/lambda-functions
Last updated