美文网首页
Swift-标签语句

Swift-标签语句

作者: Joker_King | 来源:发表于2016-11-19 17:29 被阅读222次

    在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语句旁边的使用一致,有助于使游戏的逻辑更清晰地阅读和理解。

    相关文章

      网友评论

          本文标题:Swift-标签语句

          本文链接:https://www.haomeiwen.com/subject/qdlepttx.html