Swift依然继承了C和Object的Switch语句,但在原有的基础上进行了改变,使其变得更加强大
任性的case标签:
case标签可以紧跟多个值
var score = "C"
switch score
{
case "A","a":
print("优秀")
case "B","b":
print("良好")
case "C","c":
print("及格")
case "D","d":
print("不及格")
default:
print("只能输入单个字符呀")
}
case标签可以与范围运算符合作
var score = 80
switch score
{
case 90...100:
print("优秀")
case 80..<90:
print("良好")
case 60..<80:
print("及格")
case 0..<60:
print("不及格")
default:
print("只能输入单个字符呀")
case里面与where语句结合
case var(name,results) where name=="小明" && results == 100:
print("小明取得了100分")
声明常量占位符:grade
使用grade可以获取score的值,当不能匹配上面case块时,就会执行最后一个case块,将score变量的值传给grade,这时候就不需要default语句啦。
var score = 101
switch score
{
case 90...100:
print("优秀")
case 80..<90:
print("良好")
fallthrough
case 60..<80:
print("及格")
case 0..<60:
print("不及格")
case let grade:
print("你输入的成绩是:\(grade),难道你们不是百分制吗?")
}
Switch不存在隐式贯穿和显式贯穿
解释一下什么意思:Swift语句不再像C和OC那样,不再要求每一个case语句后面显式的加一个break语句。使得Swift变得更加安全、好用。
但是如果我们想用C语言的贯穿风格,这里Swft提供了fallthrough语句,可以方便的回归到C和OC时代。
var score = 80
switch score
{
case 90...100:
print("优秀")
case 80..<90:
print("良好")
fallthrough
case 60..<80:
print("及格")
case 0..<60:
print("不及格")
default:
print("只能输入单个字符呀")
我们在上面代码上加入fallthrough,这次输出的就变成了
良好
及格