![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=1739258340-qVg4JUuLoubYxW3Hf7xSncsnDuA0qMqK-0-46a412e5b79043eea532bf5c57f35401)
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_26.jpg?sign=1739258340-lBQzX7wnDDiTBGlgc7ZNBdEF2RhGltiK-0-0672133d9016833e44be21bb605a802e)
在代码中,我们把exampleFunction赋值为test,在此过程中,String类型信息丢失了。如果想保留类型信息的话,就可以使用方法类型定义(typedef)来改写上述代码。保留类型信息的好处是可以使代码更易读,而且一些IDE的代码检查工具也可以检测出相关的问题,避免异常发生。具体改写的方法如下:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_27.jpg?sign=1739258340-qa4Q2Tjdos0sVl5XdaCdNduKsLd2SN0d-0-5d9d5dac6f50f13d769eb60b78c22edd)
运行后,没有错误发生。在开始将一个方法定义为StringOutput之后,就可以使用断言来判断是否是该方法类型。在上例中,如果存在其他的方法并定义为相应的名称,那么当再次使用断言时便会提示出错:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_28.jpg?sign=1739258340-WVFMjpD5trMzBXxLqd6b7P7NvLWlmUtO-0-dcbe4cab42579c788067ed93cfbdf8f8)
运行结果:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_29.jpg?sign=1739258340-clCqYohI80X7td3Q1GljbgipUcPPhAJR-0-a0f9a9c3cc561e8554b0ac65a24345e7)
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_30.jpg?sign=1739258340-jdb7WV1IPBQSCvNbOl8JvQq3TA5cF4vJ-0-9596ca9fd73fb0002607182c1450987a)