การเขียนโปรแกรม Dart - Typedef

typedefหรือนามแฝงประเภทฟังก์ชันช่วยในการกำหนดพอยน์เตอร์ไปยังโค้ดที่เรียกใช้งานได้ภายในหน่วยความจำ ใส่เพียงแค่typedef สามารถใช้เป็นตัวชี้ที่อ้างอิงถึงฟังก์ชัน

ด้านล่างนี้เป็นขั้นตอนในการใช้งาน typedefs ในโปรแกรม Dart

Step 1: Defining a typedef

typedefสามารถใช้เพื่อระบุลายเซ็นฟังก์ชันที่เราต้องการให้ฟังก์ชันเฉพาะตรงกัน ลายเซ็นฟังก์ชันถูกกำหนดโดยพารามิเตอร์ของฟังก์ชัน (รวมถึงประเภทของฟังก์ชัน) ชนิดการส่งคืนไม่ใช่ส่วนหนึ่งของลายเซ็นฟังก์ชัน ไวยากรณ์เป็นดังนี้

typedef function_name(parameters)

Step 2: Assigning a Function to a typedef Variable

ตัวแปรของ typedef สามารถชี้ไปที่ฟังก์ชันใดก็ได้ที่มีลายเซ็นเดียวกับ typedef. คุณสามารถใช้ลายเซ็นต่อไปนี้เพื่อกำหนดฟังก์ชันให้กับไฟล์typedef ตัวแปร.

type_def  var_name = function_name

Step 3: Invoking a Function

typedefตัวแปรสามารถใช้เพื่อเรียกใช้ฟังก์ชัน นี่คือวิธีที่คุณสามารถเรียกใช้ฟังก์ชัน -

var_name(parameters)

ตัวอย่าง

ตอนนี้เรามาดูตัวอย่างเพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับ typedef ใน Dart.

ในตอนแรกให้เรากำหนด a typedef. ที่นี่เรากำลังกำหนดลายเซ็นของฟังก์ชัน ฟังก์ชันจะรับพารามิเตอร์อินพุตสองประเภทinteger. ประเภทการส่งคืนไม่ใช่ส่วนหนึ่งของลายเซ็นฟังก์ชัน

typedef ManyOperation(int firstNo , int secondNo); //function signature

ต่อไปให้เรากำหนดฟังก์ชัน กำหนดฟังก์ชันบางอย่างด้วยลายเซ็นฟังก์ชันเดียวกันกับฟังก์ชันManyOperation typedef.

Add(int firstNo,int second){ 
   print("Add result is ${firstNo+second}"); 
}  
Subtract(int firstNo,int second){ 
   print("Subtract result is ${firstNo-second}"); 
}  
Divide(int firstNo,int second){ 
   print("Add result is ${firstNo/second}"); 
}

สุดท้ายเราจะเรียกใช้ฟังก์ชันผ่าน typedef. ประกาศตัวแปรชนิด ManyOperations กำหนดชื่อฟังก์ชันให้กับตัวแปรที่ประกาศ

ManyOperation oper ;  

//can point to any method of same signature 
oper = Add; 
oper(10,20); 
oper = Subtract; 
oper(30,20); 
oper = Divide; 
oper(50,5);

operตัวแปรสามารถชี้ไปที่วิธีการใดก็ได้ที่ใช้พารามิเตอร์จำนวนเต็มสองตัว Addการอ้างอิงของฟังก์ชันถูกกำหนดให้กับตัวแปร Typedefs สามารถสลับการอ้างอิงฟังก์ชันที่รันไทม์

ตอนนี้ให้เรารวบรวมทุกส่วนเข้าด้วยกันและดูโปรแกรมที่สมบูรณ์

typedef ManyOperation(int firstNo , int secondNo); 
//function signature  

Add(int firstNo,int second){ 
   print("Add result is ${firstNo+second}"); 
} 
Subtract(int firstNo,int second){ 
   print("Subtract result is ${firstNo-second}"); 
}
Divide(int firstNo,int second){ 
   print("Divide result is ${firstNo/second}"); 
}  
Calculator(int a, int b, ManyOperation oper){ 
   print("Inside calculator"); 
   oper(a,b); 
}  
void main(){ 
   ManyOperation oper = Add; 
   oper(10,20); 
   oper = Subtract; 
   oper(30,20); 
   oper = Divide; 
   oper(50,5); 
}

โปรแกรมควรสร้างสิ่งต่อไปนี้ output -

Add result is 30 
Subtract result is 10 
Divide result is 10.0

Note - รหัสด้านบนจะส่งผลให้เกิดข้อผิดพลาดหากไฟล์ typedef ตัวแปรพยายามชี้ไปที่ฟังก์ชันที่มีลายเซ็นฟังก์ชันอื่น

ตัวอย่าง

Typedefsยังสามารถส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชัน ลองพิจารณาตัวอย่างต่อไปนี้ -

typedef ManyOperation(int firstNo , int secondNo);   //function signature 
Add(int firstNo,int second){ 
   print("Add result is ${firstNo+second}"); 
}  
Subtract(int firstNo,int second){
   print("Subtract result is ${firstNo-second}"); 
}  
Divide(int firstNo,int second){ 
   print("Divide result is ${firstNo/second}"); 
}  
Calculator(int a,int b ,ManyOperation oper){ 
   print("Inside calculator"); 
   oper(a,b); 
}  
main(){ 
   Calculator(5,5,Add); 
   Calculator(5,5,Subtract); 
   Calculator(5,5,Divide); 
}

มันจะผลิตสิ่งต่อไปนี้ output -

Inside calculator 
Add result is 10 
Inside calculator 
Subtract result is 0 
Inside calculator 
Divide result is 1.0