1.6 分支選擇

我們并不希望只能寫出逐行線性執(zhí)行的程序。因為代碼和人生一樣,總會出現(xiàn)岔路口,我們常常需要在岔路口上做出抉擇,左邊還是右邊?。對于人生的選擇,swift可沒提供什么幫助,但如果在程序當中做選擇,swift可以已經(jīng)為程序員們做好了準備。

1、if else分支選擇

在程序設計的過程中,我們常常需要讓一段代碼在一定的條件下才執(zhí)行。這時候我們就可以選擇使用if關鍵字。我們先看一下if else關鍵字的語法描述。

首先是if關鍵字,后面是一個條件表達式,如果條件表達式為真,則執(zhí)行第一段代碼,否則執(zhí)行第二段代碼。使用ifelse可以輕松實現(xiàn)一個二元的分支選擇。我們看一個簡單的例子,在兩個數(shù)中,選擇一個大的打印輸出。

var x = arc4random_uniform(100)   // x為100以內的隨機數(shù)
var y = arc4random_uniform(100)   // y為100以內的隨機數(shù)

if x > y {
    print(x)
} else {
    print(y)
}

其實我們通過if else的組合可以生成更復雜的,就像這樣的.

if x > y {
    print(x)
} else if x == y {
    print(x)
} else {
    print(y)
}

這種冗長的表達方式并不是一種最好的選擇,我們可以使用switch關鍵字來實現(xiàn)多路分支分支,不但在會產(chǎn)生更易讀的代買結構,更重要的是switch可以提供更強勁的 模式匹配 能力。關于switch的模式匹配,可以看另外一篇內容 switch與模式匹配

2、switch case分支選擇

switch可以幫我們做兩個重要的工作,一個是描述所有的分支結構,另外一個是通過模式匹配,實現(xiàn)分支選擇,我們可以認為if是通過條件表達式來進行分支選擇的,而switch則是通過模式匹配進行分支選擇,當然這并不是說switch不可以使用條件表達式哦,可以看另外一篇內容switch與模式匹配來了解switch如何使用條件表達式。我們先看下一switch的語法表達式。

匹配對象按照順序依次與條件分支進行匹配,直到遇到一條可以匹配成功的分支后,執(zhí)行該分支對應的代碼。當代碼執(zhí)行完成以后,正常的流程就結束了。

let number = 3

switch number {
case 1:
    print("Monday")
case 2:
    print("Tuesday")
case 3:
    print("Wednesday")
case 4:
    print("Thursday")
case 5:
    print("Friday")
case 6:
    print("Saturday")
case 7:
    print("Sunday")
default:
    print("error")
}

這是一個非常簡單的例子,把一個整數(shù)轉化為星期的單詞描述。其中常量 number 就是匹配對象。依次與每個分支進行匹配,最后執(zhí)行print("Wednesday")后,switch語句結束。

swift默認為每個case語句添加了break,一但匹配成功并執(zhí)行完分支對應的代碼后,流程就會被break結束掉,如果我們希望無論是否匹配成功都要一次執(zhí)行每個分支的匹配,那么我們可以使用fallthrough關鍵字來實現(xiàn)。

let number = 3

switch number {
case 3:
    print("Monday")
    fallthrough
case 4:
    print("Tuesday")
    fallthrough
default:
    print("error")
}

通過fallthrough,number會依次與每一個分支條件進行匹配,盡管第一個分支條件就已經(jīng)完成匹配了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容