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