一、switch語句在Swift和C中的區(qū)別
- 在C語言中,如果case的結(jié)尾沒有break,就會接著執(zhí)行下一個case
- 在Swift中,不需要在每一個case后面增加break,執(zhí)行完case對應(yīng)的代碼后默認會自動退出switch語句
- 在Swift中,case后面必有可執(zhí)行的代碼
let grade = "B"
switch grade {
case "A":
print("優(yōu)秀等級")
case "B":
print("良好等級")
case "C":
print("中等等級")
default:
print("未知等級")
} - 1個case后面可以填寫多個匹配條件,條件之間用逗號,隔開
let score = 95
switch score/10 {
case 10, 9:
print("優(yōu)秀")
case 8, 7, 6:
print("及格")
default:
print("不及格")
}
//打印結(jié)果是:優(yōu)秀 - case后面可以填寫一個范圍作為匹配條件
let score = 95
switch score{
case 90...100:
print("優(yōu)秀")
case 60...89:
print("及格")
default:
print("不及格")
}
//打印結(jié)果是:優(yōu)秀 - switch要保證處理所有可能的情況,不然編譯器直接報錯,因此,default一定要加。
- case還可以用來匹配元組
let point = (1, 1)
switch point {
case (0, 0) :
print("這個點在原點上")
case (_, 0) :
print("這個點在x軸上")
case (0, _) :
print("這個點在y軸上")
case (-2...2, -2...2) :
print("這個點在矩形框內(nèi)")
default:
print("這個點在其他位置") - 在case匹配的同時,可以將switch中的值綁定給一個特定的常量或變量,以便在case后面的語句中保用
let point = (10, 0)
switch point {
case (let x, 0) :
print("這個點在x軸上,x值是(x)")
case (0, let y) :
print("這個點在y軸上,y值是(y)")
case let (x, y) :
print("這個點的x值是:(x), y值是(y)")
} - switch語句可以使用where來增加判斷的條件
let point = (10, 0)
switch point {
case let (x, y) where x == y :
print("這個點在y = x直線上")
case let (x, y) where x == -y :
print("這個點在y = -x直線上")
default:
print("這個點不在這2條線上")
} - fallthrough - 執(zhí)行完當前case之后,會接著執(zhí)行fallthrough后面的case或者default語句
let num = 20
var str = "(num)是個"
switch num{
case 0...50 :
str += "0 ~ 50之間的"
fallthrough
default:
str += "整數(shù)"
} fallthrough后面的case條件不能定義變量和常量