iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
0
Software Development

Swift 菜鳥的30天系列 第 8

Day-08 Swift 語法(4) - 到底要跑去哪的 Control Flow

Control Flow 控制流

Swift 中提供了許多控制流的方式,在此篇文章我們會個別講解他的用途和使用時機。


For - in 循環

前面在介紹集合的時候,我們就會常常使用到 For - in 方式來遍歷整個集合內的內容。

https://ithelp.ithome.com.tw/upload/images/20171226/20107701W8qS4yZvjU.png

你也可以遍歷一個字典,我們使用元組方式使他返回一個 ( key, value ) 的元組,在下面的例子中我們就將科目設為它的鍵值,成績為它的值,並將其解果 print 出來。

https://ithelp.ithome.com.tw/upload/images/20171226/201077012U7NU9nUyR.png
這裡有需要注意的一點,創建 Dictionary 出來的順序並不等於你遍歷時候的順序。

For - in 循環也能遍歷數字區間,我們簡單地做出一個 99 乘法表中 5 的內容。
https://ithelp.ithome.com.tw/upload/images/20171226/20107701uumCxtNbhU.png
在這個範例中 index 是一個常量,它的值在每次循環開始的時候被自動設置。因此,它不需要在使用之前聲明。它隱式地在循環中聲明了,不需要再用 let 聲明關鍵字。

For - in 在使用時如果你不需要序列的每一個值,可以使用下劃線 ( _ ) 代替。這個例子我們試做計算 2 的 10 次方。
https://ithelp.ithome.com.tw/upload/images/20171226/20107701milh3IqJkc.png
在這個範例中,不需要紀錄他循環的值,只要按照我們次數操作循環,所以我們使用下劃線代替。

在某些時候我們也可以限制他的區間,例如我們希望我們的數字執行到 ten 就結束,但上述的範例卻循環了 11 次。這時,我們可以使用( ..< )方式,使他在到達 ten 的時候中斷循環。
https://ithelp.ithome.com.tw/upload/images/20171226/20107701IMcwTnN6F0.png

當如果你不希望資料總是沒有間隔的方式呈現,你也能使用 stride 方式告訴他你的限制條件,這裡的範例我們想顯示 100 內的從 0 開始計算的每次間隔為 10 的數字。 其中 to 的方式會在 100 之前停止運作,through 則是包含 100。

https://ithelp.ithome.com.tw/upload/images/20171227/20107701BPzvM140C6.png
https://ithelp.ithome.com.tw/upload/images/20171227/201077013HqMW9b2yd.png


While 循環

while 循環簡單來說就是會一直重複執行循環直到條件不符合 (false) 為止就停止循環。在 Swift 中提供了我們兩種的 While 循環 , while 以及 repeat - while 。

while

while 方式會在開始前檢查條件是否符合 (true)。在這邊我們也用 while 的方式實作一個九九乘法中的 5 ,我們告訴他 i = 1 ,並在每次循環結束都讓 i + 1 直到 i 不小於 10 。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701uDs9fcdwG0.png

repeat - while

他與 while 方式不同,他是在結束時檢查條件是否符合,我們使用 repeat - while 方式實做一樣的範例。

https://ithelp.ithome.com.tw/upload/images/20171227/20107701N83X9FZkM2.png

*假如一開始初始值就大於條件的話,只有 repeat - while 會執行一次,因為他是在執行完才檢查條件。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701HVc1J2lVFX.png


條件語法

很多時候我們要的不是重複循環一些程式碼,而是希望系統能夠判斷程式法正確或錯誤時,該怎麼執行下一步。又或者我們希望他根據不同的狀況,來執行不同的應對。在此, Swift 也提供了兩種判斷的語法給使用者使用。 if 以及 switch 。

if

if 比較適合簡單的條件,像是對錯條件,我們會在當條件等於 true 的時候去執行它。

https://ithelp.ithome.com.tw/upload/images/20171227/20107701jpT1ocHURR.png

我們也能在後方加上 else 來表示當條件為 false 時該執行些什麼。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701kUgkSCQHjv.png

你也可以在 else 後方繼續加上 if 語法繼續判斷。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701f7fuluM0Zb.png

Switch 匹配

switch 就可以被應用在比較複雜的情況了,可以將一個值與多個可能的模式匹配,每種情況會對應到某一個 case 去執行。也可能同時有多種 case 符合,但只會執行第一個符合的 case,在你無法預期所有的 case 時,你也可以設一個 default 去涵蓋所有條件。

  • case中必須包含一個可執行的語句,否則系統會產生錯誤

https://ithelp.ithome.com.tw/upload/images/20171227/20107701TIRgfAPtJZ.png

當沒有符合 case 上的條件時,switch 則會執行 default 中的程式。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701HFE0MqGtmQ.png

case 中也可以同時包含兩個值或多個值。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701N7otdRb75b.png

當你不想停止程式碼,繼續執行的話,可以使用 fallthrough 繼續執行下一段程式碼。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701boeLW1e5yZ.png
https://ithelp.ithome.com.tw/upload/images/20171227/2010770176jL79Jo5N.png

區間匹配

大概用一張圖就能說明區間匹配明白的意思,就是在 case 中加入區間提供判斷。
https://ithelp.ithome.com.tw/upload/images/20171227/20107701P5v9XGnCrN.png

值綁定

當你在需要將匹配的值臨時設為一個常量或變量時,就會用到值綁定的功能,因為值是在情況的函數體裡“綁定”到臨時的常量或者變量的。因此,當我們想知道這個點是落在 x , y 軸上,又或者是隨便座落一個點上,這時我們就能透過值綁定看見他的值。
https://ithelp.ithome.com.tw/upload/images/20180717/20107701sqGtb87TMA.png

控制流的部分大致上介紹到這邊,下篇文章會教大家控制控制流。
念起來都這麼繞舌了,想必原本打結的就打更多結了


上一篇
Day-07 Swift 語法(3) - 集合類型
下一篇
Day-09 Swift 語法(5) - 被控制的Control flow—轉換控制流
系列文
Swift 菜鳥的30天30

尚未有邦友留言

立即登入留言