Dart - Typedef

Dart - Typedef 首页 / Dart入门教程 / Dart - Typedef

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

它将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/dart-programming/dart-programming-typedef.html

来源:LearnFk无涯教程网

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Service Mesh实践指南 -〔周晶〕

微服务架构实战160讲 -〔杨波〕

10x程序员工作法 -〔郑晔〕

深入拆解Tomcat & Jetty -〔李号双〕

消息队列高手课 -〔李玥〕

Spark性能调优实战 -〔吴磊〕

高楼的性能工程实战课 -〔高楼〕

后端工程师的高阶面经 -〔邓明〕

AI大模型系统实战 -〔Tyler〕

好记忆不如烂笔头。留下您的足迹吧 :)