2 分支語句——《Swift3.0 從入門到出家》
當程式面臨多個選擇,每一個選擇都會執行不同的程式碼塊,這個時候就要使用分支語句。常見的分支語句有:
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”)
}