Swift-标签语句

2016-11-19  本文已影响222人  Joker_King

在Swift中,可以在其他循环和条件语句中嵌套循环和条件语句,以创建复杂的控制流结构。 然而,循环和条件语句都可以使用break语句来提前结束它们的执行。 因此,有时需要明确关于哪个循环或条件语句希望break语句终止。 类似地,如果您有多个嵌套循环,那么可以显式地说明continue语句应该影响哪个循环。

要实现这些目标,您可以使用语句标签标记循环语句或条件语句。 使用条件语句,可以使用带有break语句的语句标签来结束带标签语句的执行。 使用循环语句,可以使用带有break或continue语句的语句标签来结束或继续执行带标签的语句。

标签语句通过将标签放置在与语句的介绍器关键字相同的行上,后跟冒号来指示。 下面是一个while循环语法的例子,所有循环和switch语句的原理是相同的

*label name*: while *condition* {

*statements*

}
let finalSquare = 25
var board = [Int](repeating: 0, count: finalSquare + 1)
board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02
board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08
var square = 0
var diceRoll = 0


gameLoop: while square != finalSquare {
    diceRoll += 1
    if diceRoll == 7 { diceRoll = 1 }
    switch square + diceRoll {
    case finalSquare:
        // diceRoll will move us to the final square, so the game is over
        break gameLoop
    case let newSquare where newSquare > finalSquare:
        // diceRoll will move us beyond the final square, so roll again
        continue gameLoop
    default:
        // this is a valid move, so find out its effect
        square += diceRoll
        square += board[square]
    }
}
print("Game over!")

如果上面的break语句没有使用gameLoop标签,它会断开switch语句,而不是while语句。 使用gameLoop标签可以清楚地知道应该终止哪个控制语句。

当调用continue gameLoop跳转到循环的下一次迭代时,不一定非要使用gameLoop标签。 游戏中只有一个循环,因此对于哪个循环continue语句会产生影响,没有歧义。 但是,使用带有continue语句的gameLoop标签没有任何危害。 这样做与标签在break语句旁边的使用一致,有助于使游戏的逻辑更清晰地阅读和理解。

上一篇下一篇

猜你喜欢

热点阅读