iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0

https://ithelp.ithome.com.tw/upload/images/20181021/20110801nR3wttXWSB.png

Swift 提供了許多控制流的方式,在本篇終將會說明其用途及使用時機

for in 迴圈

在前面介紹集合的時候,我們就常常使用 for in 迴圈來遍歷整個集合的內容

https://ithelp.ithome.com.tw/upload/images/20181021/20110801CgcNy2FW1y.png

for in 迴圈也能遍歷數字區間,可以很簡單就算出九九乘法表,以下用 9 來做示範

https://ithelp.ithome.com.tw/upload/images/20181021/20110801ICRLViAYLv.png

我們來解釋一下上面的程式碼;上面的 number 代表 1 ~ 9 的數字,依序進入 「 print("9 * \()number) = \(9 * number)」中,即印出結果。

再一個例子,現在我們要算 2 的 1 ~ 9 次方:

https://ithelp.ithome.com.tw/upload/images/20181021/201108019blMqyilWq.png

這裡解釋一下,要算a的b次方,在Swift裏的公式不是a^b,而是pow(a, b),其中a及b的值都要是Double型態,所以上面的number從Int轉為Double型態。

若你希望若你希望資料以間隔的方式呈現,可以使用 stride 來敘述你的條件,其中 to 是在指定的值前停止動作,而 through 是包含指定的值:

https://ithelp.ithome.com.tw/upload/images/20181021/20110801QP4Z16CgLQ.png

while 迴圈

while 會一直循環執行程式碼,直到條件不符合,也就是 false 為止。在 Swift 中,while 提供了兩種 while 的循環:while 及 repeat-while。差別在於 repeat-while 再進行判斷前一定會執行一次內部程式,再去進行判斷;而 while 則是先判斷條件,再去決定要不要執行程式。
while v.s. repeat-while = 先奏後斬 v.s. 先斬後奏

while

while 條件 {
     要循環執行的程式
}

舉個例子:

https://ithelp.ithome.com.tw/upload/images/20181021/20110801Mi0d6tLerj.png

repeat-while

repeat {
      要循環執行的程式
} while 條件

舉個例子:

https://ithelp.ithome.com.tw/upload/images/20181021/20110801lqidq3PkiW.png

條件語法

條件語法根據不同特定條件去執行特定的程式。Swift 提供兩種條件語法:if 及 switch

if

最簡單的形式紙偶一個表達句,當條件返回 true 才會去執行內容程式碼;而需要去判斷 false 後執行程式碼,就需要加入 else,就會去執行設定的另一段程式碼,else 是不一定要存在的:

https://ithelp.ithome.com.tw/upload/images/20181021/20110801sRCxgM2RU2.png

也可以在 else 後面加上 if 繼續去判斷:

https://ithelp.ithome.com.tw/upload/images/20181021/20110801zlA6NWiRTI.png

if let

宣個一個臨時常數或是變數,並且執行內部程式,這個臨時常數或是變數只能在這個 if let 使用。if 及 while都可以使用:

https://ithelp.ithome.com.tw/upload/images/20181021/201108014uWmTlxasz.png

上面的程式碼在判斷常數 number 能不能轉型成為整數型別

switch

上面的 if 語法都是很簡單的判斷 true 或 false 而已,如果我們需要判斷比較複雜的條件,就可以考慮使用 switch。switch 會將一個值比對多種情況(case),然後去執行對應到的程式,所有 case 必須涵蓋全不可能的情況,如果沒有就需要在最後面補上 default,一但有 case 的程式被執行,switch 就不會繼續比對下去:

switch 值 {
case 情況1:
    相對應情況1 執行的程式
case 情況2, 比對情況3: // 多個情況可以用逗號 , 隔開
    相對應情況2或情況3 執行的程式
default:
    以上情況比對都不成功時 執行的程式
}

https://ithelp.ithome.com.tw/upload/images/20181021/20110801NFHDpg1Rw1.png

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

如果不想停止,想繼續執行程式碼,可以加入 fallthrough

https://ithelp.ithome.com.tw/upload/images/20181021/20110801liTgp7UbzU.png

值綁定

case 可以將比對的值綁定 ( value binding ) 到一個臨時的常數或變數,以便在程式內使用:

https://ithelp.ithome.com.tw/upload/images/20181021/201108015R1K8MbHbt.png

另外可以使用 where 來判斷其他條件:

https://ithelp.ithome.com.tw/upload/images/20181021/20110801K7vuyNhGXm.png

今天的 Control Flow就到這裡囉!如果有其他的問題歡迎留言給我!(*´∀`)


上一篇
Swift4.2 Day-05 集合類型—Dictionary
下一篇
Swift4.2 Day-07 Control Flow ( 2 )
系列文
菜比八iOS程式開發30天自我挑戰30

尚未有邦友留言

立即登入留言