这里每天分享一个 iOS 的新知识,快来关注我吧
前言
昨天的文章讲了 swift 中常见的循环,今天来讲讲跟循环相关的另外一个小知识。
在 for-in
循环中,有 continue
和 break
两个用来中断循环的关键字,continue
用来跳出本次循环,进入下次循环。break
用来中断整个迭代。
但是大家有没有想过,如果在一个多层嵌套的 for-in
循环中,这两个关键字的表现是什么?
实际测试下来,continue
和 break
在多层嵌套的 for-in
循环中只会作用在当前的那一层循环,举个例子:
swift
for i in 0..<3 {
print("i = \(i)")
for j in 0..<3 {
if j == 1 {
break
}
print("j = \(j)")
}
}
// i = 0
// j = 0
// i = 1
// j = 0
// i = 2
// j = 0
根据最终的打印情况来看,break
只是中断了内层的循环,而没有影响外层的循环。
循环标签
还是上边的例子,如果我想要在内层的循环中 break
掉外层的循环,应该怎么做呢?
swift 中有个 for-in
的标记语句,叫做循环标签(Loop Labels),专门用来解决这个问题。
循环标签允许你在内层循环中使用 break
或 continue
语句来控制外层循环的执行,或者在某些情况下跳过多层循环的一部分:
swift
outerLoop: for i in 0..<3 {
print("i = \(i)")
for j in 0..<3 {
if j == 1 {
break outerLoop
}
print("j = \(j)")
}
}
// i = 0
// j = 0
在上述示例中,我们定义了两个循环,外层循环使用标签 outerLoop
标记。在达到条件后,使用 break outerLoop
来直接退出外层循环。
在其他的循环中也可以使用:
while 循环
swift
outerLoop: while i < 3 {
print("i = \(i)")
i += 1
for j in 0..<3 {
if j == 1 {
break outerLoop
}
print("j = \(j)")
}
}
// i = 0
// j = 0
repeat 循环
swift
outerLoop: repeat {
print("i = \(i)")
i += 1
for j in 0..<3 {
if j == 1 {
break outerLoop
}
print("j = \(j)")
}
} while i < 3
// i = 0
// j = 0
下面是一些有关循环标签的关键要点
-
标签命名 :标签名称是我们自己定义的,可以根据需要选择有语义的名称。标签名称后面跟着冒号
:
。 -
使用场景:break 和 continue 语句都可以使用循环标签。
-
谨慎过度使用:尽管循环标签在某些情况下非常有用,但过度使用它们可能会导致代码复杂性增加,难以理解。
这里每天分享一个 iOS 的新知识,快来关注我吧
本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!