- Dart 编程教程
- Dart 编程 - 主页
- Dart 编程 - 概述
- Dart 编程 - 环境
- Dart 编程 - 语法
- Dart 编程 - 数据类型
- Dart 编程 - 变量
- Dart 编程 - 运算符
- Dart 编程 - 循环
- Dart 编程 - 决策
- Dart 编程 - 数字
- Dart 编程 - 字符串
- Dart 编程 - 布尔值
- Dart 编程 - 列表
- Dart 编程 - 列表
- Dart 编程 - 地图
- Dart 编程 - 符号
- Dart 编程 - 符文
- Dart 编程 - 枚举
- Dart 编程 - 函数
- Dart 编程 - 接口
- Dart 编程 - 类
- Dart 编程 - 对象
- Dart 编程 - 集合
- Dart 编程 - 泛型
- Dart 编程 - 包
- Dart 编程 - 异常
- Dart 编程 - 调试
- Dart 编程 - Typedef
- Dart 编程 - 库
- Dart 编程 - 异步
- Dart 编程 - 并发
- Dart 编程 - 单元测试
- Dart 编程 - HTML DOM
- Dart 编程有用的资源
- Dart 编程 - 快速指南
- Dart 编程 - 资源
- Dart 编程 - 讨论
Dart 编程 - Typedef
typedef或函数类型别名有助于定义指向内存中可执行代码的指针。简单地说,typedef可以用作引用函数的指针。
下面给出了在 Dart 程序中实现typedef 的步骤。
第 1 步:定义 typedef
typedef可用于指定我们希望特定函数匹配的函数签名。函数签名由函数的参数(包括它们的类型)定义。返回类型不是函数签名的一部分。其语法如下。
typedef function_name(parameters)
第 2 步:将函数分配给 typedef 变量
typedef的变量可以指向与typedef具有相同签名的任何函数。您可以使用以下签名将函数分配给typedef变量。
type_def var_name = function_name
第三步:调用函数
typedef变量可用于调用函数。以下是调用函数的方法 -
var_name(parameters)
例子
现在让我们通过一个示例来了解有关Dart 中typedef的更多信息。
首先,让我们定义一个typedef。这里我们定义一个函数签名。该函数将采用两个整数类型的输入参数。返回类型不是函数签名的一部分。
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函数的引用被分配给变量。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也可以作为参数传递给函数。考虑以下示例 -
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);
}
它将产生以下输出-
Inside calculator Add result is 10 Inside calculator Subtract result is 0 Inside calculator Divide result is 1.0