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