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

4.5 Swift語言中的流程跳轉語句

跳轉語句可以提前中斷循環結構,也可以人為控制選擇結構的跳轉,使代碼的執行更加靈活多變。Swift中提供了大量的流程跳轉語句供開發者使用,熟悉這些語句的結構與特點可以使開發效率大大提高。Swift中提供的流程跳轉語句主要有continue、break、fallthrough、return、throw、guard。

continue語句用于循環結構中,其作用是跳過本次循環,直接開始下次循環。這里需要注意,continue的作用并不是跳出循環結構,而是跳過本次循環,直接執行下一個循環周期,示例如下:

上面的示例代碼將跳過index等于6時的代碼塊,在打印信息中會缺少index等于6時的打印輸出。需要注意的是,continue語句默認的操作范圍直接包含它的這一層循環結構,如果代碼中嵌套了多層循環結構,continue語句會跳過本次循環。那么,如果想要實現不跳過本次循環,而是直接跳至開發者指定的那一層循環結構,該如何寫呢?示例如下:

以上代碼創建了兩層循環結構,在內層循環中使用了continue語句進行跳轉,MyLabel是外層循環的標簽,因此這里的continue跳轉將會跳出indexI等于1時的外層循環,直接開始indexI等于2的循環操作。

break語句是中斷語句,其也可以用于循環結構中,和continue語句不同的是,break語句會直接中斷直接包含它的循環結構,即當循環結構為一層時,如果循環并沒有執行完成,則后面所有的循環都將被跳過。如果有多層循環結構,程序會直接中斷直接包含它的循環結構,繼續執行該循環結構外層的循環結構,示例如下:

上面的代碼在index等于6時使用了break語句進行中斷,第5次循環后的所有打印信息都將被跳過。break語句默認將中斷直接包含它的循環結構,同樣也可以使用指定標簽的方式來中斷指定的循環結構,示例如下:

break語句也可以用于switch結構中。在switch結構中,break語句將直接中斷后面所有的匹配過程,直接跳出switch結構。在Swift語言中,switch-case選擇匹配結構默認就是break操作,故開發者不必手動添加break代碼。

fallthrough語句是Swift中特有的一種流程控制語句,前面提到過,當Swift語言中的switch-case結構匹配到一個case后,會自動中斷后面所有case的匹配操作,如果在實際開發中需要switch-case結構不自動進行中斷操作,可以使用fallthrough語句,示例如下:

以上示例代碼將會打印Sure、Sim和SIM。

return語句對于讀者來說應該十分熟悉,其在函數中用于返回結果值,也可以用于提前結束無返回值類型的函數。當然,return語句的應用場景不只局限于函數中,在閉包中也可以使用return進行返回。函數的相關知識會在后面的章節詳細介紹,這里只做簡單演示,示例如下:

throw語句用于異常的拋出,throw語句拋出的異常如果不進行捕獲處理,也會使程序中斷。Swift語言中有拋出異常和處理異常的代碼結構,在后面的章節中會詳細介紹,這里只做簡單演示。在函數中拋出異常的示例代碼如下:

guard-else結構語句是Swift 2.0之后新加入的一種語法結構,Swift團隊創造它的目的在于使代碼的結構和邏輯更加清晰。在實際開發中,尤其是在函數的編寫中,經常會遇到這樣的場景:當參數符合某個條件時,函數才能正常執行,否則直接通過return來終止函數的執行,如果不使用guard-else結構,示例代碼如下:

上面的代碼結構在邏輯上并不那么優美,開發者的原意是當param參數大于0時才執行函數中的操作,在2.0之前卻使用了相反的邏輯來中斷函數,當然,開發者也可以將函數實現如下:

經過修改后,代碼邏輯清晰了許多,然而還是有一些問題,如果這個函數中需要做的操作很多,那么所有條件判斷的代碼都將寫在if語句塊中,代碼結構就顯得雜亂無章,guard-else語句就是為了優化這種情況而產生的。guard-else語句也被稱為守護語句,顧名思義,其作用就是確保某個條件成立才允許其后的代碼執行,示例如下:

主站蜘蛛池模板: 郸城县| 泾源县| 平昌县| 金寨县| 定日县| 桂东县| 邮箱| 枝江市| 延庆县| 通许县| 留坝县| 巍山| 镶黄旗| 壶关县| 霍林郭勒市| 永济市| 四子王旗| 历史| 门源| 宝兴县| 凤山县| 衢州市| 泗阳县| 靖边县| 宁波市| 衡山县| 江都市| 浦县| 天祝| 乌鲁木齐县| 泌阳县| 个旧市| 沙洋县| 汨罗市| 江津市| 华宁县| 盐津县| 资阳市| 安徽省| 蛟河市| 澄江县|