这儿每天共享一个 iOS 的新知识,快来重视我吧

前语

昨天的文章讲了 swift 中常见的循环,今日来讲讲跟循环相关的另外一个小知识。

swift 根底:讲一讲 swift 中的循环

for-in 循环中,有 continuebreak 两个用来中止循环的要害字,continue 用来跳出本次循环,进入下次循环。break 用来中止整个迭代。

可是我们有没有想过,如果在一个多层嵌套for-in 循环中,这两个要害字的表现是什么?

实践测验下来,continuebreak 在多层嵌套的 for-in 循环中只会效果在当时的那一层循环,举个比如:

foriin0..<3{
print("i=\(i)")
forjin0..<3{
ifj==1{
break
}
print("j=\(j)")
}
}
//i=0
//j=0
//i=1
//j=0
//i=2
//j=0

根据终究的打印情况来看,break 仅仅中止了内层的循环,而没有影响外层的循环。

循环标签

仍是上边的比如,如果我想要在内层的循环中 break 掉外层的循环,应该怎么做呢?

swift 中有个 for-in 的符号句子,叫做循环标签(Loop Labels),专门用来处理这个问题。

循环标签答应你在内层循环中运用 breakcontinue 句子来操控外层循环的执行,或许在某些情况下跳过多层循环的一部分:

outerLoop:foriin0..<3{
print("i=\(i)")
forjin0..<3{
ifj==1{
breakouterLoop
}
print("j=\(j)")
}
}
//i=0
//j=0

在上述示例中,我们界说了两个循环,外层循环运用标签 outerLoop 符号。在达到条件后,运用 break outerLoop 来直接退出外层循环。

在其他的循环中也能够运用

while 循环

outerLoop:whilei<3{
print("i=\(i)")
i+=1
forjin0..<3{
ifj==1{
breakouterLoop
}
print("j=\(j)")
}
}
//i=0
//j=0

repeat 循环

outerLoop:repeat{
print("i=\(i)")
i+=1
forjin0..<3{
ifj==1{
breakouterLoop
}
print("j=\(j)")
}
}whilei<3
//i=0
//j=0

下面是一些有关循环标签的要害要点

  1. 标签命名:标签称号是我们自己界说的,能够根据需要选择有语义的称号。标签称号后边跟着冒号 :

  2. 运用场景:break 和 continue 句子都能够运用循环标签。

  3. 慎重过度运用:尽管循环标签在某些情况下十分有用,但过度运用它们可能会导致代码复杂性增加,难以理解。

这儿每天共享一个 iOS 的新知识,快来重视我吧

本文同步自微信大众号 “iOS新知”,每天按时共享一个新知识,这儿仅仅同步,想要及时学到就来重视我吧!