dart基础3
1.异步支持,在dart中有很多返回Future和Stream对象的函数,这些函数在设置完耗时任务之后就立即返回了,不会等待耗时任务完成。使用async和await关键字可以让我们像编写同步代码一样实现异步操作。
2.如何获得Future的返回结果,具有两种方式,分别是使用async和await;使用Future API。可以使用try…catch…来捕获代码中使用await所导致的错误。首先看看第一种方式:
1 | Future checkVersion() async { |
3.声明异步函数,使用async声明函数并且返回值是Future。
1 | Future<String> lookUpVersion() async => '1.0.0'; // 需要注意async修饰符的位置 |
4.同样,对于Stream对象来说,他也是一种异步操作,如果想获取他的返回值的话,那么也有两种方式:分别是使用await(await for)和Stream API。
5.可调用类,通过给类实现一个call方法,能够让类所实例化出来的对象被调用。如下所示
1 | class callable { |
6.typedef类型定义,考虑下面这个场景:
1 | class SortCollection { |
对于上面这个例子,当把f赋值给compare的时候,f的类型信息(Object, Object) -> int(rust写法)被丢弃了,此时compare的类型信息为Function。为了避免这种类型丢失的情况,可以像下面这样做:
1 | typedef Compare = int Function(Object a, Object b); |
typedef和泛型结合在一起:
1 | typedef Compare<T> = int Function(T a, T b); |