Flutter基础介绍与实作-Day5 Dart语法介绍(2)

Function函式
上次介绍了一些简单的Function,今天要介绍一些比较复杂但是很实用的。在Dart里,function被视为物件,可以把function存成变数或是作为其他function的参数来使用
我们先来看个例子:
我们这边先定义一个「birthday」的function,然而它需要4个参数分别有名子、出生年、月份、日期,最後回传字串,因为birthday前面的String表示回传结果的型态
https://ithelp.ithome.com.tw/upload/images/20210919/20141032wRTtyscFF4.jpg

这边也可以使用命名参数(Name parameters)来改写这个例子,结果会是一样的
https://ithelp.ithome.com.tw/upload/images/20210919/20141032xRjrLUbken.jpg

最後要介绍的function是匿名函式(Anonymous Function),从名子就可以之,它就是没有名子的function,通常用在容易解决或是只使用一次的function,来看一下例子吧!
forEach是list的method(方法),会代替list内的每个元素并把它作为参数传进匿名函式中。
(num)=>print("Number is $num")就是匿名函式,可以发现它并没有名字只由()所组成,而里面的num则是会被带进这个函式里使用的参数
https://ithelp.ithome.com.tw/upload/images/20210919/20141032uTTswdJLLX.jpg

※大家看到这里是不是也觉得匿名函式非常方便啊!所以在Flutter非常的常见,例如在设定按钮(Button)或是迭代list都会看见

再来要介绍的是Map,Map是使用key-value的方式来储存的资料型态,Map是使用大括号{},以key-value的方式定义,我们来看一下例子
https://ithelp.ithome.com.tw/upload/images/20210919/20141032xZpAJnU9QA.jpg

Switch
这跟前面介绍过的if有一点像,但是Switch能依照不同的状态进行不同的处理,让整体状态更为直观并拥有更好的状态,以下是例子
https://ithelp.ithome.com.tw/upload/images/20210919/201410321WVPvB3On6.jpg

例外处理
例外顾名思义就是不正常,在程序语言中,若有例外就代表发生了另一件事,原本的流程就会被中断,在Dart中有一点点不一样,Dart的例外是指未经处理的例外 (Unchecked exception),虽然Dart不会强迫一定要处理每一个例外,这样可以让程序整体看起来比较乾净整洁,但是函数若发生例外,程序还是会中断,总而言之,看到问题还是赶快处理起来比较好啦!
※解决方法:
基本上我们会运用try/catch来处理例外事件
Try/catch
将有可能发生例外的程序码置於 try{ } 里,当程序码发生例外时,若与 catch 内预期捕捉到的例外相同,则会执行 catch 里面的程序码
https://ithelp.ithome.com.tw/upload/images/20210919/20141032AdpYGXoL6J.jpg

可以从结果得知由於执行divide引发了Exception,而触发执行on IntegerDivisionByZeroException内程序码最後执行finally内程序码。

上面是不是有一些没有看过的东西呢?不要紧张,因为那些又是另一个小主题了,明天会帮大家在做介绍喔


今日总结
今天介绍了一些稍微比较难一点点的东西,明天会把今天没有说完的继续补完,还有一些新的东西,介绍完我们就可以正式进入Flutter的世界了


<<:  day4: 程序码的命名 (function, event, customer hook)

>>:  [30天 Vue学好学满 DAY19] Vuex -2

[Day 22] Edge Impulse + BLE Sense实现唤醒词辨识(下)

=== 书接上回 [Day 21] Edge Impulse + BLE Sense实现唤醒词辨识(...

SEO营销

SEO代表搜索引擎优化(SEO),这是通过自然搜索引擎性能提高网站流量的数量和一致性的过程。它旨在改...

DAY30 - 写在30天之後:成为前端工程师一年後的心路历程

终於到最後一天了~~ 刚好从去年铁人赛到今年是我从切版转职走到"更完整的前端工程师&quo...

[13th][Day11] image tag

pull 一个 ubuntu image docker pull ubuntu:19.04 列出现有...

微服务的应用程序-会话层是ISO OSI模型的服务程序(即sidecar代理)所属的层

-API 网关和服务网格(来源:Liran Katz) 服务网格(service mesh)是便於...