Swift 提供了許多控制流的方式,在本篇終將會說明其用途及使用時機
在前面介紹集合的時候,我們就常常使用 for in 迴圈來遍歷整個集合的內容
for in 迴圈也能遍歷數字區間,可以很簡單就算出九九乘法表,以下用 9 來做示範
我們來解釋一下上面的程式碼;上面的 number 代表 1 ~ 9 的數字,依序進入 「 print("9 * \()number) = \(9 * number)」中,即印出結果。
再一個例子,現在我們要算 2 的 1 ~ 9 次方:
這裡解釋一下,要算a的b次方,在Swift裏的公式不是a^b,而是pow(a, b),其中a及b的值都要是Double型態,所以上面的number從Int轉為Double型態。
若你希望若你希望資料以間隔的方式呈現,可以使用 stride 來敘述你的條件,其中 to 是在指定的值前停止動作,而 through 是包含指定的值:
while 會一直循環執行程式碼,直到條件不符合,也就是 false 為止。在 Swift 中,while 提供了兩種 while 的循環:while 及 repeat-while。差別在於 repeat-while 再進行判斷前一定會執行一次內部程式,再去進行判斷;而 while 則是先判斷條件,再去決定要不要執行程式。
while v.s. repeat-while = 先奏後斬 v.s. 先斬後奏
while 條件 {
要循環執行的程式
}
舉個例子:
repeat {
要循環執行的程式
} while 條件
舉個例子:
條件語法根據不同特定條件去執行特定的程式。Swift 提供兩種條件語法:if 及 switch
最簡單的形式紙偶一個表達句,當條件返回 true 才會去執行內容程式碼;而需要去判斷 false 後執行程式碼,就需要加入 else,就會去執行設定的另一段程式碼,else 是不一定要存在的:
也可以在 else 後面加上 if 繼續去判斷:
宣個一個臨時常數或是變數,並且執行內部程式,這個臨時常數或是變數只能在這個 if let 使用。if 及 while都可以使用:
上面的程式碼在判斷常數 number 能不能轉型成為整數型別
上面的 if 語法都是很簡單的判斷 true 或 false 而已,如果我們需要判斷比較複雜的條件,就可以考慮使用 switch。switch 會將一個值比對多種情況(case),然後去執行對應到的程式,所有 case 必須涵蓋全不可能的情況,如果沒有就需要在最後面補上 default,一但有 case 的程式被執行,switch 就不會繼續比對下去:
switch 值 {
case 情況1:
相對應情況1 執行的程式
case 情況2, 比對情況3: // 多個情況可以用逗號 , 隔開
相對應情況2或情況3 執行的程式
default:
以上情況比對都不成功時 執行的程式
}
如果不想停止,想繼續執行程式碼,可以加入 fallthrough
case 可以將比對的值綁定 ( value binding ) 到一個臨時的常數或變數,以便在程式內使用:
另外可以使用 where 來判斷其他條件: