- Flutter从0基础到App上线
- 萧文翰
- 251字
- 2021-03-27 01:49:41
5.5 方法类型定义
在Dart编程语言中,一切皆对象,方法也不例外。下面来看一段代码:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_25.jpg?sign=1739610234-Ex6c6OIA25b5f0oU3gPj7RQJjlpLnm1B-0-8c977c507376ebcdaa3d7d7b37769912)
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_26.jpg?sign=1739610234-bWv1ZTqVH0nucOF69h0wK4vRmcsVsaNl-0-aec6069ac9ba4abbbd20f82e3b2ae853)
在代码中,我们把exampleFunction赋值为test,在此过程中,String类型信息丢失了。如果想保留类型信息的话,就可以使用方法类型定义(typedef)来改写上述代码。保留类型信息的好处是可以使代码更易读,而且一些IDE的代码检查工具也可以检测出相关的问题,避免异常发生。具体改写的方法如下:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_27.jpg?sign=1739610234-4h1Wf00ityhUwKqBEprPCksIN2vEK6ik-0-0f4739d9abd9bcbdbda589c60e8c479d)
运行后,没有错误发生。在开始将一个方法定义为StringOutput之后,就可以使用断言来判断是否是该方法类型。在上例中,如果存在其他的方法并定义为相应的名称,那么当再次使用断言时便会提示出错:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_28.jpg?sign=1739610234-VaMQQNMZJpOABglVYdOxw5DokXsgC7xM-0-07097ba304f17a5e7652e8814de1cc57)
运行结果:
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_29.jpg?sign=1739610234-Qx32YSXOCmrGX9rQ1xUYPVOcdlz1n0ll-0-348fc0648fbf59e59c10a9342cd8d267)
![img](https://epubservercos.yuewen.com/9CF474/18096059801207706/epubprivate/OEBPS/Images/txt005_30.jpg?sign=1739610234-xyQdsZ8nIg2pmgRacTlMtlrdm9E7MM2U-0-6544243523ef40e1052a20da79890e10)