การเขียนโปรแกรม 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