• Welcome to Swift (苹果官方Swift文档初译与注解二十六)---181~188页(第四章-- 流程控制)


    Do-While 

      while循环的另一个版本是do-while循环,它在判断条件之前,先执行一遍循环体,然后再次执行循环体,直到条件成为false.

      do-while循环的通过格式:

        do {

            statements

        } while condition

      我们再用蛇和梯子的例子,使用do-while循环代替while循环.其中 finalSquare, board, square, 和 diceRoll 的初始化与while循环是一样的:

        let finalSquare = 25

        var board = Int[](count: finalSquare + 1, repeatedValue: 0)

        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

      游戏的这个版本中,循环的第一步是检查梯子或蛇,方格中没有梯子就会将玩家直接带到25格子,这样玩家不可能通过爬梯子来获胜.出于安全,要在循环的最开始检查蛇或梯子.

      游戏开始的时候,玩家总是在方格0.board[0] 总是等于0,这没有什么影响:

        do {

            // move up or down for a snake or ladder

            square += board[square]

            // roll the dice

            if ++diceRoll == 7 { diceRoll = 1 }

            // move by the rolled amount

            square += diceRoll

        } while square < finalSquare

        println("Game over!")

      在检查完蛇和梯子之后,开始投掷色子,然后玩家根据投掷的色子移动相应的格子,本次循环完成.

      循环条件(while square < finalSquare)与之前的是一样的,但这次是在第一次循环完成之后才计算条件.do-while循环比while更适合这个游戏例子.在上面的do-while循环里,square    += board[square]总是在条件确认之后就立刻执行,这样就去除了检查数组边界检查.

    Conditional Statements (条件语句)

      代码中经常要根据某种条件来执行不同片段的代码.当错误发生的时候,你可能想运行扩展一段代码,或者当一个值太大或者太小的时候,你想像是一个信息,出于这样的情况,你需要处  理条件代码.

      Swift提供了两种方式来在代码中增加条件分支,它们是if语句和switch语句.通常的,使用if语句来计算简单的条件以供少量的几个可能情况.switch语句比较适合复杂的条件和更多的可  能分支,它的匹配模式在这些情况下能够是代码更加准确的根据分支执行.

    If

      最简单的例子,if语句只有一个if条件.它只中条件是true的时候才会执行一组语句:

        var temperatureInFahrenheit = 30

        if temperatureInFahrenheit <= 32 {

            println("It's very cold. Consider wearing a scarf.")

        }

        // prints "It's very cold. Consider wearing a scarf.

      这个例子检查天气温度是否小于或者等于32度(华氏温度,32是水的冰点温度),如果是,将会输出一个消息,否则,没有消息输出,代码将继续执行if语句{}之后的部分.

      if语句提供了选择,这被称为else分句,当if条件是false的时候,else的语句被执行:

        temperatureInFahrenheit = 40

        if temperatureInFahrenheit <= 32 {

            println("It's very cold. Consider wearing a scarf.")

        } else {

            println("It's not that cold. Wear a t-shirt.")

        }

        // prints "It's not that cold. Wear a t-shirt.

      上面两个分支总会有一个被执行.因为温度增加到40华氏度,它不再那么冷得要穿一个披肩,因此,else分支被触发.

      可以多个if语句相互链接在一起来处理额外的分支:

        temperatureInFahrenheit = 90

        if temperatureInFahrenheit <= 32 {

            println("It's very cold. Consider wearing a scarf.")

        } else if temperatureInFahrenheit >= 86 {

            println("It's really warm. Don't forget to wear sunscreen.")

        } else {

            println("It's not that cold. Wear a t-shirt.")

        }

        // prints "It's really warm. Don't forget to wear sunscreen.”

      这里,添加了一个if语句来响应指定的一个温暖温度.最后的else语句保留下来,用来相应当温度既不特别温暖也不特别寒冷的情况.

      最后的else是可选的:

        temperatureInFahrenheit = 72

        if temperatureInFahrenheit <= 32 {

            println("It's very cold. Consider wearing a scarf.")

        } else if temperatureInFahrenheit >= 86 {

            println("It's really warm. Don't forget to wear sunscreen.")

        }

      这个例子里,温度既不太冷也不太温暖,不会触发if或者else if条件,因此没有信息输出.

  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/caios/p/3825066.html
Copyright © 2020-2023  润新知