Welcome to Swift (蘋果官方Swift文檔初譯與註解二十六)---181~188頁(第四章-- 流程式控制制)

來源:互聯網
上載者:User

標籤:style   使用   strong   for   代碼   io   

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條件,因此沒有資訊輸出.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.