复制代码
let request = (10,"failed")
switch request {
case (_, "success"):
"success"
case (1 ... 10, _):
"1~10" //被输出
default:
"default"
}
Value Binding
针对元组,Switch还支持类似于Optional Binding的Value Binding,就是能把元组中的各个值提取出来,然后直接在下面使用:
复制代码
let request = (0,"success")
switch request {
case (0, let state):
state //被输出:success
case (let errorCode, _):
"error code is (errorCode)"
} // 涵盖了所有可能的case,不用写default了
这样也是可以的:
复制代码
let request = (0,"success")
switch request {
case let (errorCode, state):
state //被输出:success
case (let errorCode, _):
"error code is (errorCode)"
}
把let放在外面和放在里面为每一个元素单独写上let是等价的。
当你在一个case里使用Value Binding的时候,如果你同时也在它的上一个case里使用了fallthrough,这是编译器所不允许的,你可能会收到这样一个编译错误:
只要把下面的errorCode去掉就行了,当然,考虑好自己的逻辑。
支持额外的逻辑判断
在使用Switch语句时,Switch会适当地导向相应的case部分,这其实就相当于做了一次逻辑判断,但Swift的Switch语句还支持额外的逻辑判断:
let request = (0,"success")
switch request {
case (0, let state) where state != "success":









