舉例講解Swift編程中switch...case語句的用法
Switch作為選擇結(jié)構(gòu)中必不可少的語句也被加入到了Swift中,只要有過編程經(jīng)驗的人對Switch語句都不會感到陌生,但蘋果對Switch進行了大大的增強,使其擁有其他語言中沒有的特性。使用Switch語句很簡單:
var i = 0 switch i { case 0: "0" //被輸出 case 1: "1" default: "2" }
在這個最簡單的Switch語句中,與其他語言很不同的一點是:不用顯式的加上break。Swift的Switch語句會自動在case結(jié)尾處加上break,執(zhí)行完滿足條件的case部分后,就自動退出了。但是在某些情況下,我們可能會希望Switch能同時執(zhí)行兩條case,那么可以這樣:
var i = 3 switch i { case 0,3: "0" //被輸出 case 1: "1" default: "2" }
在case后的多個條件中,用逗號隔開即可。
如果就是想執(zhí)行完一條case之后,想繼續(xù)執(zhí)行下一條case,就要用到一個新的關(guān)鍵字:
var i = 0 switch i { case 0: "0" //被輸出 fallthrough case 1: "1" //被輸出 case 2: "2" default: "default" }
使用新的關(guān)鍵字fallthrough能使Switch在執(zhí)行完一個case之后,緊接著執(zhí)行下一條case。
Swift的Switch語句一定要涵蓋所有的情況,這并不是說一定要有default,只要上面的case能滿足所有的情況,就可以不用寫default。
下面我們來看一些小例子幫助理解:
例1:
let someOne = ("25","liyuanbo") switch someOne { case (_,let name) where name.hasPrefix("li"): println("First name has li") default: println("First has not li") }
這里 (_,let name) where name.hasPrefix("li") 就是在someOne2落入(_,let name)中的name有沒有前綴字符串有沒有l(wèi)i。當然someOne2是滿足這個條件的。
例2:
下面我們來看看fallthrough的用法
switch coordinate1 { case (0,0): println("原點") fallthrough case (_,0): println("x軸") fallthrough case(0,_): println("y軸") case(-2...2,-2...2): println("矩形區(qū)域") default: println("沒有任何目標區(qū)域") }
這樣我們可以看到打印輸出了:原點,x軸,y軸,如果繼續(xù)加,就會打印多出一個矩形區(qū)域。
最后我們要強調(diào)一點,swift中的switch一定的包含變量的所有情況,這里我們?nèi)绻鹀oordinate4是(10,10)然后把default注釋點,就會報錯,因為上面4個條件是不能滿足(10,10)這個點的。
那是不是說必須得有default,當然不是的,這要對變量的所有情況都包含,可以沒有default。
let coordinate2 = (2,0) switch coordinate2 { case (0,0): println("原點") case (let x,0): println("x軸") case(0,let y): println("y軸") case(let x,let y): println("所有區(qū)域") }
這里就可以沒有default,因為這里case(let x,let y)都包含了2維坐標的所有點。
相關(guān)文章
Objective-C中的block與Swift中的尾隨閉包使用教程
Block是OC中的閉包,他和swift中的閉包有什么區(qū)別呢?下面這篇文章就來給大家介紹關(guān)于Objective-C中的block與Swift中的尾隨閉包使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。2017-12-12Swift利用CoreData如何存儲多種數(shù)據(jù)類的通訊錄
這篇文章主要給大家介紹了關(guān)于Swift利用CoreData如何存儲多種數(shù)據(jù)類的通訊錄的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。2017-12-12深入解析Swift中switch語句對case的數(shù)據(jù)類型匹配的支持
這篇文章主要介紹了Swift中switch語句對case的數(shù)據(jù)類型匹配的支持,Swift中switch...case語句支持多種數(shù)據(jù)類型的匹配判斷,十分強大,需要的朋友可以參考下2016-04-04簡單了解Swift語言中的break和continue語句的用法
這篇文章主要簡單介紹了Swift語言中的break和continue語句的用法,與其他語言的一樣用于循環(huán)語句流程控制,需要的朋友可以參考下2015-11-11SwiftUI學習之state和Binding的區(qū)別淺析
這篇文章主要給大家介紹了關(guān)于SwiftUI學習之state和Binding區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03