2 分支語句
當(dāng)程序面臨多個(gè)選擇凝颇,每一個(gè)選擇都會(huì)執(zhí)行不同的代碼塊皮服,這個(gè)時(shí)候就要使用分支語句牢裳。常見的分支語句有:
if 選擇語句:if... if…else if…elseif…else
if是現(xiàn)實(shí)生活中:“如果…那么”的映射
if 選擇語句
格式:if 判斷條件{
執(zhí)行語句塊
}
【注意】:判斷條件不能是普通常量表達(dá)式,只能是關(guān)系運(yùn)算或者邏輯運(yùn)算的表達(dá)式隆檀,只有判斷條件為真的時(shí)候摇天,才能執(zhí)行語句塊的內(nèi)容
在swift語言中,盡量不要在if判斷條件出現(xiàn)判斷可選類型的變量是否等于nil恐仑。將可選類型的值賦給一個(gè)常量泉坐,然后編譯器會(huì)自動(dòng)判斷可選類型是否為nil,如果不為nil的話裳仆,會(huì)自動(dòng)強(qiáng)制解析腕让,將可選類型值變成具體值,這種形式被稱為【可選綁定】
let str = scanf()!
if let n = Int(str){
執(zhí)行語句塊
}
if…else…
if 判斷條件{
語句塊1
}else{
語句塊2
}
如果判斷條件為真歧斟,就會(huì)執(zhí)行語句塊1的內(nèi)容整個(gè)if語句結(jié)束
如果判斷條件為假纯丸,直接執(zhí)行語句塊2的內(nèi)容
if…else if …else
if 判斷條件1{
語句塊1
}
else if 判斷條件2{
語句塊2
}
else{
語句塊3
}
【注意】:else語句可以缺省
當(dāng)某個(gè)if后面的判斷條件為真,執(zhí)行if下面的語句塊静袖,然后結(jié)束整個(gè)if語句觉鼻,后面的if語句不再判斷
switch 多分支語句
switch 適用于輕量級(jí)判斷,判斷條件個(gè)數(shù)少队橙,并且個(gè)數(shù)已知
switch 常量{
case 常量1:
語句塊1
case 常量2:
語句塊2
……
default:
語句塊n
}
【注意】
case后面的常量必須唯一坠陈,不能重復(fù)
case后面的常量值如果和switch后面的常量匹配,執(zhí)行case下面的語句塊喘帚,然后結(jié)束整個(gè)switch語句
switch下面的case語句畅姊,要包含switch后面長(zhǎng)兩個(gè)涉及到的所有值
case后面的常量都不能和switch后面的常量匹配就執(zhí)行default后面的語句塊內(nèi)容
swift中的switch語句中的default語句不能缺省
多個(gè)常量值共用一個(gè)語句塊,case后面的每一個(gè)常量值用逗號(hào)隔開吹由,最后一個(gè)常量值后面添加冒號(hào)
fallthrough 貫穿,添加貫穿的case語句會(huì)繼續(xù)執(zhí)行下一個(gè)case語句塊的內(nèi)容朱嘴,不判斷下一個(gè)case后面的常量是否滿足
switch下面的case 可以添加區(qū)間也可以添加元組
例子:case后面添加區(qū)間
let s = 70
switch s{
case 90…100:
print(“A”)
case 89..<90:
print(“ B”)
default:
print(“E”)
}
case 后面常量是一個(gè)元組
let point = (1,2)
switch point{
case (0.0):
print(“該點(diǎn)坐標(biāo)為原點(diǎn)坐標(biāo)’)
case (_,0):
print(“該點(diǎn)在X軸上”)//只要元組的第二個(gè)值和case后面的第二個(gè)值相同倾鲫,前面的值是多少無所謂粗合,case后面的元組值已經(jīng)和switch后面的元組值匹配
case(0,_):
print(“該點(diǎn)在y軸上”)
case (-2…2,-2…2):
print(“該點(diǎn)在坐標(biāo)區(qū)間內(nèi)”)
default:
print(“打印該點(diǎn)的坐標(biāo)\(point.0),\(point.1)”)
}
case 后面匹配的值可以使用臨時(shí)變量或者臨時(shí)常量接收乌昔,在case下面的語句塊中可以直接訪問這個(gè)臨時(shí)變量或者臨時(shí)常量 ————我們稱這種情況為【值綁定】
例子;
let score = 60
switch score{
case 90…100:
print(“A”)
case let grade: //用一個(gè)臨時(shí)常量來接收
print(grade) //可以直接訪問這個(gè)臨時(shí)常量
}
【注意】:臨時(shí)常量已經(jīng)包含了score能出現(xiàn)的所有可能值,所以值綁定可以對(duì)default語句進(jìn)行缺省
值綁定可以將匹配的值賦給一個(gè)臨時(shí)變量后者臨時(shí)常量磕道,看業(yè)務(wù)邏輯,需要修改匹配值就定義成變量溺蕉,不需要修改就定義成常量
可以使用值綁定判斷元組中的數(shù)據(jù)內(nèi)容
let paint = (1,1)
switch point{
case (0,0):
print(“該點(diǎn)坐標(biāo)在原點(diǎn)”)
case(_,0):
print(“該點(diǎn)左邊在x軸上”)
case(var x ,var y):
print(“將該點(diǎn)的坐標(biāo)移動(dòng)100個(gè)單位結(jié)果:\(x + 100, y + 100)”)
}
對(duì)case 后面的常量添加額外的判斷條件疯特,判斷語句要使用關(guān)鍵字where
let num = 15
switch num{
case num where num >= 10 && num <= 15:{
print(“”輸入的數(shù)字在10-15之間)
}
case num where num > 15:
print(“輸入的數(shù)字在15之后”)
default:
print(“小于20”)
}