在swift的switch中,case后面加了fallthrough的用法,就和OC的case后面没加break的用法是一样的!
使用fallthrough需要注意的有:
1.加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行
var age = 10
switch age {
case 0...10:
print("小朋友")
fallthrough
case 11...20:
print("大朋友")
case let x:
print("\(x)岁的朋友")
}
//输出结果:
小朋友
大朋友
2.加了fallthrough语句后,【紧跟的后一个】case条件不能定义常量和变量
var age = 10
switch age {
case 0...10:
print("小朋友")
fallthrough //此处报错
case let x:
print("\(x)岁的朋友")
}
//程序报错:
'fallthrough' cannot transfer control to a case label that declares variables
原因,我理解的是:由第一点我们知道,第一个case执行完后(输出“小朋友”)会直接执行下一个case,而下一个case条件里定义了临时变量x,这样就导致直接从上一个case进来的并没有这个变量x,那如果case语句里用到了x,很明显就会出错。swift这么要求安全的一种语言自然是不允许发生这种事情的,所以,fallthrough后一个case条件里不允许定义常量/变量——除了紧跟着的后一个,后面的其他case还是可以定义常量/变量的(如第一个代码例子)
3.执行完fallthrough后直接跳到下一个条件语句,本条件执行语句后面的语句不执行
var age = 10
switch age {
case 0...10:
print("小朋友")
fallthrough
print("我跳转了哦") //这一句没有执行
case 11...20:
print("大朋友")
case let x:
print("\(x)岁的朋友")
}
//输出结果:
小朋友
大朋友
如果你有任何问题,请留言告诉我!
原文地址:https://www.jb51.cc/swift/326746.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。