Lập trình Dart - Typedef

A typedef, hoặc bí danh kiểu hàm, giúp xác định con trỏ tới mã thực thi trong bộ nhớ. Nói một cách đơn giản, mộttypedef có thể được sử dụng như một con trỏ tham chiếu đến một hàm.

Dưới đây là các bước để triển khai typedefs trong một chương trình Dart.

Step 1: Defining a typedef

A typedefcó thể được sử dụng để chỉ định một chữ ký hàm mà chúng ta muốn các hàm cụ thể khớp với nhau. Chữ ký hàm được xác định bởi các tham số của hàm (bao gồm cả kiểu của chúng). Kiểu trả về không phải là một phần của chữ ký hàm. Cú pháp của nó như sau.

typedef function_name(parameters)

Step 2: Assigning a Function to a typedef Variable

Một biến của typedef có thể trỏ đến bất kỳ chức năng nào có cùng chữ ký như typedef. Bạn có thể sử dụng chữ ký sau để gán một chức năng chotypedef Biến đổi.

type_def  var_name = function_name

Step 3: Invoking a Function

Các typedefbiến có thể được sử dụng để gọi các hàm. Đây là cách bạn có thể gọi một hàm -

var_name(parameters)

Thí dụ

Bây giờ chúng ta hãy lấy một ví dụ để hiểu thêm về typedef trong Dart.

Đầu tiên, chúng ta hãy xác định một typedef. Ở đây chúng tôi đang xác định một chữ ký hàm. Hàm sẽ nhận hai tham số đầu vào của kiểuinteger. Kiểu trả về không phải là một phần của chữ ký hàm.

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

Tiếp theo, chúng ta hãy xác định các chức năng. Xác định một số hàm với cùng một chữ ký hàm như củaManyOperation 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}"); 
}

Cuối cùng, chúng tôi sẽ gọi hàm qua typedef. Khai báo một biến kiểu ManyOperations. Gán tên hàm cho biến đã khai báo.

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);

Các operbiến có thể trỏ đến bất kỳ phương thức nào nhận hai tham số nguyên. CácAddtham chiếu của hàm được gán cho biến. Typedefs có thể chuyển đổi các tham chiếu chức năng trong thời gian chạy

Bây giờ chúng ta hãy đặt tất cả các phần lại với nhau và xem chương trình hoàn chỉnh.

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); 
}

Chương trình sẽ tạo ra những điều sau output -

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

Note - Đoạn mã trên sẽ dẫn đến lỗi nếu typedef biến cố gắng trỏ đến một hàm có chữ ký hàm khác.

Thí dụ

Typedefscũng có thể được truyền dưới dạng tham số cho một hàm. Hãy xem xét ví dụ sau:

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); 
}

Nó sẽ tạo ra những thứ sau output -

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