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