一、switch语句在Swift和C中的区别
- 在C语言中,如果case的结尾没有break,就会接着执行下一个case
- 在Swift中,不需要在每一个case后面增加break,执行完case对应的代码后默认会自动退出switch语句
- 在Swift中,case后面必有可执行的代码
let grade = "B"
switch grade {
case "A":
print("优秀等级")
case "B":
print("良好等级")
case "C":
print("中等等级")
default:
print("未知等级")
} - 1个case后面可以填写多个匹配条件,条件之间用逗号,隔开
let score = 95
switch score/10 {
case 10, 9:
print("优秀")
case 8, 7, 6:
print("及格")
default:
print("不及格")
}
//打印结果是:优秀 - case后面可以填写一个范围作为匹配条件
let score = 95
switch score{
case 90...100:
print("优秀")
case 60...89:
print("及格")
default:
print("不及格")
}
//打印结果是:优秀 - 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("这个点在矩形框内")
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 - 执行完当前case之后,会接着执行fallthrough后面的case或者default语句
let num = 20
var str = "(num)是个"
switch num{
case 0...50 :
str += "0 ~ 50之间的"
fallthrough
default:
str += "整数"
} fallthrough后面的case条件不能定义变量和常量
网友评论