SWIFT逻辑控制之控制转移

swift 提供了5个关键字 :break 。 continue。 fallthrough。return。throw

break 跳出循环

下面通过一个例子来帮助我们理解break的使用
需求:求x^4 - y^2 = 15*x*y在300以内的一个正整数解
我们可以枚举1~300的数
方法一:
var getanswer = false
getanswer = false
for x in 1...300{
for y in 1...300{
if x*x*x*x - y*y == 15 * x * y {
print(x , y)
getanswer = true
break
}
if getanswer{
break
}
}
}
打印结果为 4 4
这种方法 通过二判断,代码比较冗余,不易阅读

方法二:
我们可以给整个循环添加一个变量名, 在代码里break
getanswer : for x in 1...300{
for y in 1...300{
if x*x*x*x - y*y == 15 * x * y {
print(x , y)
break getanswer
}
}
}
打印结果为 4 4

continue 跳出当前循环并执行下一次循环

fallthrough 就和OC的case后面没加break的用法是一样的!

1.加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行
switch age {
    case 0...10:
        print(小朋友)
        fallthrough
    case 11...20:
        print(大朋友)
    case let x:
        print((x)岁的朋友)
}
 
//输出结果:
小朋友
大朋友</code>
2.加了fallthrough语句后,紧跟的后一个case条件不能定义常量和变量
switch age {
    case 0...10:
        print(小朋友)
        fallthrough //此处报错
    case let x:
        print((x)岁的朋友)
}
//程序报错:
'fallthrough' cannot transfer control to a case label that declares var
ps:第一个case执行完后(输出“小朋友”)会直接执行下一个case,而下一个case条件里定义了临时变量x,这样就导致直接从上一个case进来的并没有这个变量x,那如果case语句里用到了x,很明显就会出错。swift这么要求安全的一种语言自然是不允许发生这种事情的,所以,fallthrough后一个case条件里不允许定义常量/变量——除了紧跟着的后一个,后面的其他case还是可以定义常量/变量的(如第一个代码例子)

3.执行完fallthrough后直接跳到下一个条件语句,本条件执行语句后面的语句不执行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值