在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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>); } |
请发表评论