Dart中的默认类型
2019-03-24 本文已影响0人
吃了西红柿
Dart中的变量
Dart中声明但未初始化的变量(variable)默认值都为null。那么换句话说,null可以赋值给任何类型的变量(包括dynamic、void等等)。因此任何函数的结尾都可以加上return null;
这样的话,如果只知道一个函数返回值为null的条件下,是无法知道函数声明的返回类型的。
(Tip一点
:Dart中dynamic的变量在编译阶段可以赋值给任何类型
的变量,因此要注意类型得对应哦,否则运行阶段可能出现类型转换错误的。)
方法中默认值为 dynamic
情况一:普通方法默认返回类型为dynamic(注意默认不是返回void哦!!)
方法fun、参数arg1
不显式声明返回类型,默认类型都为dynamic。
fun(arg1){
}
情况二:async函数(async函数必须返回Future类型数据)
- 未显式声明返回类型(似存在默认装包)
//fun为显式说明方法返回什么,async默认将会根据方法的返回值进行包装成Future<>类型返回。
//若方法中不存在return语句,像funA(){} async将包装成Future<void>
//本例中根据'return 1' 包装成Future<int>。
作为返回类型。
fun() async{
return 1;
}
情况三:await关键字(似存在默认解包)
(其实情况三与默认值不搭什么边,暂时没想到其他地方放)
//await修饰的函数必须返回类型为Future(或dynamic-因为dynamic可以表示任何类型)的函数(以期待在未来某一时间点返回数据)
//await会对修饰函数的返回值类型进行转换成实际类型,类似于对Future<T>进行解包成T类型数据。
//本例中根据funA的返回值为Future<int> 当数据返回时await会把数据解析成int类型 因此下面类型T为int
void fun() async{
T t = await funA();
}
Future<int> funA() async{
...
}