1. 程式人生 > >2 分支語句——《Swift3.0 從入門到出家》

2 分支語句——《Swift3.0 從入門到出家》

2 分支語句 

當程式面臨多個選擇,每一個選擇都會執行不同的程式碼塊,這個時候就要使用分支語句。常見的分支語句有:

if 選擇語句:if... if…else if…elseif…else

if是現實生活中:“如果…那麼”的對映

if 選擇語句

格式:if 判斷條件{

執行語句塊

}

【注意】:判斷條件不能是普通常量表達式,只能是關係運算或者邏輯運算的表示式,只有判斷條件為真的時候,才能執行語句塊的內容

在swift語言中,儘量不要在if判斷條件出現判斷可選型別的變數是否等於nil。將可選型別的值賦給一個常量,然後編譯器會自動判斷可選型別是否為nil,如果不為nil的話,會自動強制解析,將可選型別值變成具體值,這種形式被稱為【可選繫結】

let str = scanf()!

if let n = Int(str){

執行語句塊

}

if…else…

if 判斷條件{

語句塊1

}else{

語句塊2

}

如果判斷條件為真,就會執行語句塊1的內容整個if語句結束

如果判斷條件為假,直接執行語句塊2的內容

if…else if …else

if 判斷條件1{

語句塊1

}

else if 判斷條件2{

語句塊2

}

else{

語句塊3

}

【注意】:else語句可以預設

當某個if後面的判斷條件為真,執行if下面的語句塊,然後結束整個if語句,後面的if語句不再判斷

switch 多分支語句

switch 適用於輕量級判斷,判斷條件個數少,並且個數已知

switch 常量{

case 常量1:

語句塊1

case 常量2:

語句塊2

……

default:

語句塊n

}

【注意】

case後面的常量必須唯一,不能重複

case後面的常量值如果和switch後面的常量匹配,執行case下面的語句塊,然後結束整個switch語句

switch下面的case語句,要包含switch後面長兩個涉及到的所有值

case後面的常量都不能和switch後面的常量匹配就執行default後面的語句塊內容

swift中的switch語句中的default語句不能預設

多個常量值共用一個語句塊,case後面的每一個常量值用逗號隔開,最後一個常量值後面新增冒號

fallthrough 貫穿,新增貫穿的case語句會繼續執行下一個case語句塊的內容,不判斷下一個case後面的常量是否滿足

switch下面的case 可以新增區間也可以新增元組

例子:case後面新增區間

let s = 70

switch s{

case 90…100:

print(“A”)

case 89..<90:

print(“ B”)

default:

print(“E”)

}

case 後面常量是一個元組

let point = (1,2)

switch point{

case (0.0):

print(“該點座標為原點座標’)

case (_,0):

print(“該點在X軸上”)//只要元組的第二個值和case後面的第二個值相同,前面的值是多少無所謂,case後面的元組值已經和switch後面的元組值匹配

case(0,_):

print(“該點在y軸上”)

case (-2…2,-2…2):

print(“該點在座標區間內”)

default:

print(“列印該點的座標\(point.0),\(point.1)”)

}

case 後面匹配的值可以使用臨時變數或者臨時常量接收,在case下面的語句塊中可以直接訪問這個臨時變數或者臨時常量 ————我們稱這種情況為【值繫結】

例子;

let score = 60

switch score{

case 90…100:

print(“A”)

case let grade: //用一個臨時常量來接收

print(grade) //可以直接訪問這個臨時常量

}

【注意】:臨時常量已經包含了score能出現的所有可能值,所以值繫結可以對default語句進行預設

        值繫結可以將匹配的值賦給一個臨時變數後者臨時常量,看業務邏輯,需要修改匹配值就定義成變數,不需要修改就定義成常量

可以使用值繫結判斷元組中的資料內容

let paint = (1,1)

switch point{

case (0,0):

print(“該點座標在原點”)

case(_,0):

print(“該點左邊在x軸上”)

case(var x ,var y):

print(“將該點的座標移動100個單位結果:\(x + 100, y + 100)”)

}

對case 後面的常量新增額外的判斷條件,判斷語句要使用關鍵字where

let num = 15

switch num{

case num where num >= 10 && num <= 15:{

print(“”輸入的數字在10-15之間)

}

case num where num > 15:

print(“輸入的數字在15之後”)

default:

print(“小於20”)

}