舉例講解Swift編程中switch...case語句的用法
Switch作為選擇結(jié)構(gòu)中必不可少的語句也被加入到了Swift中,只要有過編程經(jīng)驗(yàn)的人對Switch語句都不會感到陌生,但蘋果對Switch進(jìn)行了大大的增強(qiáng),使其擁有其他語言中沒有的特性。使用Switch語句很簡單:
var i = 0
switch i {
case 0:
"0" //被輸出
case 1:
"1"
default:
"2"
}
在這個最簡單的Switch語句中,與其他語言很不同的一點(diǎn)是:不用顯式的加上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。當(dāng)然someOne2是滿足這個條件的。
例2:
下面我們來看看fallthrough的用法
switch coordinate1
{
case (0,0):
println("原點(diǎn)")
fallthrough
case (_,0):
println("x軸")
fallthrough
case(0,_):
println("y軸")
case(-2...2,-2...2):
println("矩形區(qū)域")
default:
println("沒有任何目標(biāo)區(qū)域")
}
這樣我們可以看到打印輸出了:原點(diǎn),x軸,y軸,如果繼續(xù)加,就會打印多出一個矩形區(qū)域。
最后我們要強(qiáng)調(diào)一點(diǎn),swift中的switch一定的包含變量的所有情況,這里我們?nèi)绻鹀oordinate4是(10,10)然后把default注釋點(diǎn),就會報(bào)錯,因?yàn)樯厦?個條件是不能滿足(10,10)這個點(diǎn)的。
那是不是說必須得有default,當(dāng)然不是的,這要對變量的所有情況都包含,可以沒有default。
let coordinate2 = (2,0)
switch coordinate2
{
case (0,0):
println("原點(diǎn)")
case (let x,0):
println("x軸")
case(0,let y):
println("y軸")
case(let x,let y):
println("所有區(qū)域")
}
這里就可以沒有default,因?yàn)檫@里case(let x,let y)都包含了2維坐標(biāo)的所有點(diǎn)。
相關(guān)文章
倉庫模式及其在Swift?項(xiàng)目中的應(yīng)用詳解
這篇文章主要為大家介紹了倉庫模式及其在Swift?項(xiàng)目中的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Swift代碼實(shí)現(xiàn)冒泡排序算法的簡單實(shí)例
冒牌排序可謂最基本的排序算法之一,穩(wěn)定而沒有優(yōu)化空間:D 下面就一起來看一下Swift代碼實(shí)現(xiàn)冒泡排序算法的簡單實(shí)例:2016-06-06

