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{
  ...
}
上一篇 下一篇

猜你喜欢

热点阅读