Swift4 Day-06 Control Flow ( 1 )

Albert
Albert
Sep 3, 2018 · 5 min read

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 語法集:





Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade