Swift中的条件切换语句switch...case学习教程

2020-01-08 23:12:59刘景俊

复制代码
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,这是编译器所不允许的,你可能会收到这样一个编译错误:
 条件切换语句,case,Swift
只要把下面的errorCode去掉就行了,当然,考虑好自己的逻辑。

 

支持额外的逻辑判断
在使用Switch语句时,Switch会适当地导向相应的case部分,这其实就相当于做了一次逻辑判断,但Swift的Switch语句还支持额外的逻辑判断:

复制代码
let request = (0,"success")  
switch request {  
    case (0, let state) where state != "success":