【发布时间】:2017-01-13 02:09:17
【问题描述】:
有 2 个不同的嵌套循环,每个循环都有一个 break 语句来在特定条件下中断外部循环。
我想知道如果我将 2 个外部循环标记为相同的标题,这是否会引发 break 语句的混淆?
然后我尝试了下面的代码sn-ps
//#1
outterLoop: for x in 1...3 {
innerLoop: for y in 1...3 {
if x == 3 {
break outterLoop //break the "outterLoop"
} else {
print("x: \(x), y: \(y)")
}
}
}
//#2
outterLoop: for a in 1...3 {
innerLoop: for b in 1...3 {
if b == 3 {
break outterLoop //break the "outterLoop"
} else {
print("a: \(a), b: \(b)")
}
}
}
事实证明代码运行良好,没有出现重新声明问题。我认为这可能与范围主题有关。 first break只能看到#1代码块中的outterLoop和second em> break 只能在它所在的范围内看到 outterLoop,也就是 #2 代码块。结果,不可见的作用域限制了内部break可以“看到”的变量
问题:我理解正确吗?如果没有,请纠正我。即使我没有错,我相信我使用了非正式和不精确的描述。如果您能给我一个更正式和准确的描述,那就太好了。
非常感谢
【问题讨论】:
标签: swift scope flow-control