官术网_书友最值得收藏!

4.3 循環結構

在程序編寫中,常常會有大量而重復的操作,這也是計算機計算的優勢所在,對于開發者來說,循環結構就是為執行大量而重復的代碼塊誕生的。Swift語言主要提供了for-in遍歷、while與repeat-while條件循環3種循環結構。

4.3.1 for-in循環結構

讀者對于for-in結構并不陌生,在前面章節中介紹的很多內容都使用了for-in結構進行演示。如果讀者了解C/Objective-C語言,這里就要注意了,在C/Objective-C語言中也支持for-in循環結構,但是其被稱為快速遍歷,用它進行的循環操作是無序的。Swift語言中的for-in結構則強大很多,其可以進行無序的循環遍歷,也可以進行有序的循環遍歷。

在Swift 2.2及以上版本中,在循環結構中做的最大更改就是刪除了經典的for()循環結構,許多C/Objective-C語言的開發者可能會不太習慣,事實上,Swift語言中的for-in結構已經完全可以代替曾經的for()循環,并且比for()循環的實現更加簡潔優美,同for()循環一同移除的還有“++”和“--”運算符。

使用Xcode開發工具創建一個名為ControlFlow的Playground,進行循環代碼的測試。要使用for-in結構進行有序的循環遍歷,需要配合區間運算符,并且指定一個循環次數變量,示例如下:

for-in結構中需要兩個參數,第2個參數可以是一個集合類型的實例,也可以是一個范圍區間,第1個參數為捕獲參數,每次從第2個參數中遍歷出的元素便會賦值給它,開發者在循環結構中可以直接使用。

在進行for-in循環遍歷的時候,開發者并不需要捕獲到遍歷出的值,可以使用匿名參數來接收,Swift中使用“_”符號來表示匿名參數,示例如下:

對集合的遍歷是for-in循環常用的場景之一,這些在前面講解集合類型的章節中已經詳細介紹過了,簡單的示例代碼如下:

4.3.2 while與repeat-while條件循環結構

while與repeat-while結構在C/Objective-C語言中也支持,并且功能基本一致,只是Swift語言將do-while結構修改為repeat-while。

在開發中,經常有條件循環的需求,例如模擬水池蓄水的過程,每次蓄水1/10,當蓄滿水后停止蓄水。while循環結構可以十分方便地創建這類循環代碼,示例如下:

在while循環結構中,while關鍵字后面需要填寫一個邏輯值或者以邏輯值為結果的表達式作為循環條件,如果邏輯值為真,則程序會進入while循環體。執行完循環體的代碼后進行循環條件的判斷,如果循環條件依然為真,則會再次進入循環體,否則循環結束。由于while循環是根據循環條件來判斷是否進入循環體的,如果循環條件一直成立,則會無限循環,因此開發者在使用while循環的時候,注意要在循環體中對循環條件進行修改,且修改的結果是循環條件不成立,否則會出現死循環。

上面演示的while結構會先進行條件判斷,再進行循環體的執行。repeat-while結構則會先執行一次循環體,再進行循環條件的判斷,圖4-1中列出了兩種結構的異同。

圖4-1 while結構與repeat-while結構的異同

repeat-while循環結構示例代碼如下:

主站蜘蛛池模板: 周口市| 全南县| 北海市| 江孜县| 色达县| 施甸县| 辽宁省| 乐安县| 台山市| 蒙自县| 庆城县| 兴义市| 雷山县| 襄汾县| 广宗县| 永善县| 珲春市| 长武县| 宁蒗| 崇州市| 无为县| 城固县| 静宁县| 巴彦淖尔市| 河池市| 开远市| 乐山市| 永平县| 隆林| 莱阳市| 阿鲁科尔沁旗| 武威市| 玉树县| 庆阳市| 丹棱县| 甘洛县| 商丘市| 朝阳区| 乐都县| 大姚县| 鄢陵县|