![Flutter从0基础到App上线](https://wfqqreader-1252317822.image.myqcloud.com/cover/259/33831259/b_33831259.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.5 方法类型定义
在Dart编程语言中,一切皆对象,方法也不例外。下面来看一段代码:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_25.jpg?sign=1739230190-iLi8slewVoa6acZjIUXXM6R5CrGclgOB-0-ea22d69ff8924dd77b5ef80b0bd1d7b5)
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_26.jpg?sign=1739230190-Ii9NQ3qpNN7kYbGMCqUmGQrM4qGUNPuR-0-d2a8345dc2ba3d7511b27fd2f5b452dd)
在代码中,我们把exampleFunction赋值为test,在此过程中,String类型信息丢失了。如果想保留类型信息的话,就可以使用方法类型定义(typedef)来改写上述代码。保留类型信息的好处是可以使代码更易读,而且一些IDE的代码检查工具也可以检测出相关的问题,避免异常发生。具体改写的方法如下:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_27.jpg?sign=1739230190-3m2A7pLz9n2ann7sK4QiOWwgfIokmIp8-0-262619da04c94144dfa7a40bd6d0622d)
运行后,没有错误发生。在开始将一个方法定义为StringOutput之后,就可以使用断言来判断是否是该方法类型。在上例中,如果存在其他的方法并定义为相应的名称,那么当再次使用断言时便会提示出错:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_28.jpg?sign=1739230190-wqLo3tPjgYIQ2aSeTOdTyg62x3iTqxg3-0-6034308b60fd35da8cd620a57ec8d4bd)
运行结果:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_29.jpg?sign=1739230190-j1sFnWHfSt3NkOL6SDIYEN2SFhcOG9yV-0-d966f70aeb96b8e5063d1815a9579c5d)
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_30.jpg?sign=1739230190-9eLVV7ehmpIHWzm05CAJDafqllYrQfzZ-0-4524df177789c904b2332bf701ca15b5)