Swift學習筆記 十一 控制流 迴圈

2021-09-25 17:24:06 字數 1792 閱讀 8253

swift 提供了多種流程控制結構,包括可以多次執行任務的 while 迴圈,基於特定條件選擇執行不同**分支的if 、 guard 和

switch 語句,還有控制流程跳轉到其他**位置的 break 和 continue 語句。

swift 還提供了 for-in 迴圈,⽤來更簡單地遍歷陣列(array),字典(dictionary),區間(range),字元串 (string)和其他序列類

型。

swift 的 switch 語句比許多類 c 語言要更加強大。case 還可以匹配很多不同的模式,包括範圍匹配,元組(tuple) 和特定型別匹

配。 switch 語句的 case 中匹配的值可以宣告為臨時常量或變量,在 case 作用域內使用,也可以配合 where 來描述更複雜的

匹配條件。

你可以使用 for-in 迴圈來遍歷乙個集合中的所有元素,例如陣列中的元素、範圍內的數字或者字元串中的字元。 以下例子使用

for-in 遍歷乙個陣列所有元素:

let names = ["anna", "alex", "brian", "jack"]

for name in names // 根據點數移動

square += diceroll

if square < board.count  while condition

還是蛇和梯子的遊戲,使用 repeat-while 迴圈來替代 while 迴圈。 finalsquare 、 board 、 square 和diceroll 的值初始化同 while 

迴圈時一樣:

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

repeat-while 的迴圈版本,迴圈中第一步就需要去檢測是否在梯子或者蛇的方塊上。沒有梯子會讓玩家直接上到第 25 個方格,

所以玩家不會通過梯子直接贏得遊戲。這樣在迴圈開始時先檢測是否踩在梯⼦或者蛇上是安全的。

遊戲開始時,玩家在第 0 個⽅格上, board[0] 一直等於 0, 不會有什麼影響:

repeat 

// 根據點數移動

square += diceroll

} while square < finalsquare

print("game over!")

檢測完玩家是否踩在梯子或者蛇上之後,開始擲骰子,然後玩家向前移動 diceroll 個⽅格,本輪迴圈結束。

迴圈條件( while square < finalsquare )和 while ⽅式相同,但是只會在迴圈結束後進⾏計算。在這個遊戲中, repeat-while 表現

得比 while 迴圈更好。 repeat-while 方式會在條件判斷 square 沒有超出後直接運⾏ square += board[square] ,這種方式比起前

⾯ while 迴圈的版本,可以省去陣列越界的檢查。

Swift 學習筆記 3 控制流

1.在if語句中,條件必須是乙個布林表示式 if 0 這樣的寫法是錯的,因為0不是布林表示式 2.if 的括號可寫可不寫 var score 100 var totalscore 0 if score 100 else print totalscore 3.if和let處理值缺失的情況 處理可選值 ...

Swift學習筆記五 控制流

if let num 200 if num 10 else if num 100 else 可選項判斷 單個可選項判斷 let url nsurl string 方法1 強行解包 缺陷,如果 url 為空,執行時會崩潰 let request nsurlrequest url url 方法2 首先判...

Swift 個人學習筆記 06 控制流

本文章純粹是中文版 the swift programming language 的學習筆記,所以絕大部分的內容都是文中有的。本文是本人的學習筆記,不是正式系統的記錄。僅供參考 以下還是有很多沒看懂 不確定的地方,我會以 存疑 的註解指出。在此感謝中文版翻譯者,這極大地加快了 swift 的學習速度...