• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

dart中的typedef函数别名

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

 typedef定义如下:

  typedef 给某一种特定的函数类型起了一个名字,可以认为是一个类型的别名。或者这样理解:

    自己定义了一种数据类型,不过这种数据类型是函数类型,按照这种类型实例化后的对象,就会具备类型检查;

  栗子举起,先来一个没有typedef定义:

class SortedCollection {
  Function compare;

  SortedCollection(int f(Object a, Object b)) {
    compare = f;
  }
}

int sort(Object a, Object b) => 0;

void main() {
  SortedCollection coll = new SortedCollection(sort);
  assert(coll.compare is Function)
}

  可以看到coll.compare已经丢失了函数的具体信息;

 

  再来一个通过typedef保存别的栗子:

typedef int Compare(Object a, Object b);

class SortedCollection {
  Compare compare;

  SortedCollection(this.compare);
}

int sort(Object a, Object b) => 0;

void main() {
  SortedCollection coll = new SortedCollection(sort);
  assert(coll.compare is Function);
  assert(coll.compare is Compare);
}

  可以看到,我们通过typedef,定义了Compare类型,即使在int sort 传入后,compare仍旧保持Compare的类型;

 

  基本上typedef就是这样,最后说个高级一丢的玩法,泛型函数别名:

typedef int Compare<T>(T a, T b); 

int sort(int a, int b) => a - b;

void main() {
  assert(sort is Compare<int>); 
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Dart]Flutter开发中的几个常用函数发布时间:2022-07-13
下一篇:
在线直播系统源码,Dart-FlutterDateTime日期转换发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap