Swift4 Day-06 Control Flow ( 1 )

Albert
5 min readSep 3, 2018

--

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

for in 迴圈

在前面介紹集合的時候,我們就常常使用 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 迴圈

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

while

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

舉個例子:

repeat-while

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

舉個例子:

條件語法

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

if

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

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

if let

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

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

switch

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

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

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

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

值綁定

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

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

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

Albert 的 Swift4 語法集:

Swift4 Day-01 基本語法
Swift4 Day-02 Option 及 nil
Swift4 Day-03 集合類型 — Array
Swift4 Day-04 集合類型 — Set
Swift4 Day-05 集合類型—Dictionary

--

--