typedef 或function-type alise (函数类型别名)有助于定义指向内存中可执行代码的指针。简而言之, typedef 可用作引用函数的指针。
以下是在Dart程序中实现 typedefs 的步骤。
第1步 - 定义typedef
typedef 可用于指定我们希望特定函数匹配的函数,函数由函数的参数(包括其类型)定义。其语法如下。
typedef function_name(parameters)
第2步 - 将函数分配给typedef变量
typedef 的变量可以指向具有与 typedef 的任何函数,您可以将函数分配给 typedef 变量。
type_def var_name=function_name
第3步 - 调用函数
typedef 变量可用于调用函数,这是调用函数的方法-
var_name(parameters)
Typedef - 示例1
现在让我们举一个示例来了解有关Dart中 typedef 的更多信息。
首先,让我们定义一个 typedef ,在这里,我们定义一个函数,该函数将使用两个 integer 类型的输入参数。
typedef ManyOperation(int firstNo , int secondNo); //函数签名
接下来,让我们定义函数。定义一些具有与 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 函数的引用已分配给该变量, Typedef可以在运行时切换函数引用
现在让我们将所有部分放在一起,看看完整的程序。
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); }
该程序应产生以下输出-
Add result is 30 Subtract result is 10 Divide result is 10.0
注意-如果 typedef 变量试图指向具有不同函数参数的函数,则上述代码将导致错误。
Typedef - 示例2
Typedefs 也可以作为参数传递给函数,考虑以下示例-
typedef ManyOperation(int firstNo , int secondNo); 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); }
它将产生以下输出-
Inside calculator Add result is 10 Inside calculator Subtract result is 0 Inside calculator Divide result is 1.0
参考链接
https://www.learnfk.com/dart-programming/dart-programming-typedef.html
标签:oper,Typedef,int,typedef,无涯,firstNo,second,result,Dart From: https://blog.51cto.com/u_14033984/8342393