Swift中的switch语句跟其他编程语言的switch语句,基本使用上也都一样。
下面是switch语句的基本形式,没用穿透,匹配到哪就到哪结束
var a = 10
switch a {
case 10:
print("a = 10")
case 20:
print("a = 20")
default:
print("其他情况")
}
/*
*编译器打印结果:
a = 10
*/
可以匹配多个值
let str = "d"
switch str {
case "a","b","c":
print("匹配a,b,c其中之一")
case "d","e","f":
print("匹配d,e,f其中之一")
default:
print("其他情况")
}
/*
*编译器打印结果:
匹配d,e,f其中之一
*/
匹配区间,涉及到区间语法,这里简单演示,后面会单独讲解区间语法
var a = 10
switch a {
case 1..<5:
print("匹配1到4之间的值")
case 6..<11:
print("匹配6到10之间的值")
default:
print("其他情况")
}
/*
*编译器打印结果:
匹配6到10之间的值
*/
匹配元组,下划线可以匹配所有情况,其实应该是忽略了
var value = ("hello",10,true)
switch value {
case ("hello",9,true):
print("匹配情况1")
case ("world",10,true):
print("匹配情况2")
case (_,10,true):
//下划线忽略该值,只匹配是否有其他2个值
print("匹配情况3")
default:
print("其他情况")
}
/*
*编译器打印结果:
匹配情况3
*/
前面元组章节提到过,元组可以将临时赋给变量或常量,switch也可以使用
var value = (10,20)
switch value {
case let (name1,name2):
print("name1 = \(name1)")
print("name2 = \(name2)")
case var (10,name3):
print("name3 = \(name3)")
default:
print("其他情况")
}
/*
*编译器打印结果:
name1 = 10
name2 = 20
*/
用where来判断额外情况,修改上面的代码,加入where来判断额外情况,name1>name2 条件不成立,所以就继续往下匹配
var value = (10,20)
switch value {
case let (name1,name2) where name1 > name2:
print("name1 = \(name1)")
print("name2 = \(name2)")
case var (10,name3):
print("name3 = \(name3)")
default:
print("其他情况")
}
/*
*编译器打印结果:
name3 = 20
*/
如果想要贯穿效果,那么使用fallthrough关键字
var value = 10
switch value {
case 10:
print("匹配情况1")
fallthrough
case 20:
print("匹配情况2")
default:
print("其他情况")
}
/*
*编译器打印结果:
匹配情况1
匹配情况2
*/
Comments 1 条评论
v科技核心健康