Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性。使用Switch语句很简单:
var i = 0
switch i {
case 0:
"0" //被输出
case 1:
"1"
default:
"2"
}
在这个最简单的Switch语句中,与其他语言很不同的一点是:不用显式的加上break。Swift的Switch语句会自动在case结尾处加上break,执行完满足条件的case部分后,就自动退出了。但是在某些情况下,我们可能会希望Switch能同时执行两条case,那么可以这样:
var i = 3
switch i {
case 0,3:
"0" //被输出
case 1:
"1"
default:
"2"
}
在case后的多个条件中,用逗号隔开即可。
如果就是想执行完一条case之后,想继续执行下一条case,就要用到一个新的关键字:
var i = 0
switch i {
case 0:
"0" //被输出
fallthrough
case 1:
"1" //被输出
case 2:
"2"
default:
"default"
}
使用新的关键字fallthrough能使Switch在执行完一个case之后,紧接着执行下一条case。
Swift的Switch语句一定要涵盖所有的情况,这并不是说一定要有default,只要上面的case能满足所有的情况,就可以不用写default。
下面我们来看一些小例子帮助理解:
例1:
let someOne = ("25","liyuanbo")
switch someOne
{
case (_,let name) where name.hasPrefix("li"):
println("First name has li")
default:
println("First has not li")
}
这里 (_,let name) where name.hasPrefix("li") 就是在someOne2落入(_,let name)中的name有没有前缀字符串有没有li。当然someOne2是满足这个条件的。
例2:
下面我们来看看fallthrough的用法
switch coordinate1
{
case (0,0):
println("原点")
fallthrough
case (_,0):
println("x轴")
fallthrough
case(0,_):
println("y轴")
case(-2...2,-2...2):
println("矩形区域")
default:
println("没有任何目标区域")
}








