时间:2021-05-02
语法
Swift 语言中 switch 语句的语法:
switch expression {
case expression1 :
statement(s)
fallthrough
case expression2, expression3 :
statement(s)
fallthrough
default :
statement(s);
}
注意:在大多数语言中,switch 语句块中,case 要紧跟 break,否则 case 之后的语句会顺序运行,而在 Swift 语言中,默认是不会执行下去的,switch 也会终止。如果你想在 Swift 中让 case 之后的语句会按顺序继续运行,则需要使用 fallthrough 语句。
需要注意的地方有两点:
Switch当然也支持显式的break,通常只有一种情况下你会这么做,那就是当你也不想在default里做任何事情的时候,这个时候你就可以在default里显式地加上一句break。
fallthrough并不是在任何情况下都有效,当你在Switch里使用Value Binding技术的时候,fallthrough就被禁止了。Value Binding在下面会讲到。
支持多种数据类型
在Objective-C里,Switch语句只能支持整形的数据(或者一个字符),但是在Swift里,Switch能支持多种数据类型,包括浮点、布尔、字符串等:
支持浮点:
支持布尔:
支持字符串:
可以说是史上支持数据类型最多的Switch了。
支持区间运算符
不仅仅是循环结构里可以用区间运算符,在Switch里同样可以用区间运算符:
对某个数值区间进行批量匹配,这样是不是很酷?浮点数也同样支持区间运算符。
支持元组
作为被大大增强的Switch,元组也是被支持的:
使用元组和使用其他数据类型一致,不过元组还有一项特点,对于不想关心的值,可以用下划线_跳过,如:
那么在使用Switch时,同样支持这项特性:
对于不关心的值跳过,只要满足另一个值就行了。需要注意一点的是,如果元组中的值也是数字类型,那么也是可以用区间运算符的:
Value Binding
针对元组,Switch还支持类似于Optional Binding的Value Binding,就是能把元组中的各个值提取出来,然后直接在下面使用:
这样也是可以的:
把let放在外面和放在里面为每一个元素单独写上let是等价的。
当你在一个case里使用Value Binding的时候,如果你同时也在它的上一个case里使用了fallthrough,这是编译器所不允许的,你可能会收到这样一个编译错误:
只要把下面的errorCode去掉就行了,当然,考虑好自己的逻辑。
支持额外的逻辑判断
在使用Switch语句时,Switch会适当地导向相应的case部分,这其实就相当于做了一次逻辑判断,但Swift的Switch语句还支持额外的逻辑判断:
这同样很酷,相信在某种情况下会派上大用场。
总结
Swift对Switch进行了大大增强,使Switch的灵活性得到了很大提升,这是激动人心的改变,但是如果掌控不好其中的变化,可能会使你在进行错误排查时增加难度,也会使代码复杂度变高。在适当地时候灵活运用,保持头脑清晰总是有益的。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Swift中的switch...case语句可以判断对象类型,Objective-C中则必须是整数。不可以穿透,可以不写break,?1234567891011
java中的switchcase语句switch-case语句格式如下:switch(变量){case变量值1://;break;case变量值2://...;
学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现。所以不妨自己来实现Switc
在Swift中的switch语句,只要第一个匹配的情况(case)完成执行,而不是通过随后的情况(case)的底部,如它在C和C++编程语言中的那样。以下是C和
Go语言switch语句switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上直下逐一测试,直到匹配为止。。switch语句执行的过程