在oc中,case關(guān)鍵字出現(xiàn)在switch流程控制語(yǔ)法中,swift也不例外.但是相較與oc中switch只能篩選整型變量,swift中switch卻不僅限于此.還有一些其他的語(yǔ)法改變這里不做過(guò)多的介紹,這里要介紹的是case 和 where結(jié)合使用精準(zhǔn)匹配.在某些場(chǎng)景使用,還是可以簡(jiǎn)化不少代碼的.
我也是初學(xué)swift的菜鳥(niǎo)一枚,目前還奮斗在碼oc代碼的路上,僅此做做筆記,以后萬(wàn)一要寫(xiě)swift項(xiàng)目時(shí)忘了,可以回頭來(lái)看看.
直接貼代碼,自己意會(huì)
switch流程控制中case where的使用
let point = (8, 8)
switch point {
case (let x, let y) where x == y:
//這里對(duì)x,y解析,并添加一個(gè)where條件x=y時(shí)才執(zhí)行下方代碼
print("這個(gè)點(diǎn)在y=x上")
case (0, 0):
print("這個(gè)點(diǎn)在原點(diǎn)上")
default:
print("這個(gè)點(diǎn)不符合以上2中情況")
}
if case的結(jié)合使用
switch需要列出太多情況,就算用default至少也要列出2種.有時(shí)我們可能只需要抓取對(duì)其中一種情況,就可以考慮使用if case
let age = 18
if case 0..<18 = age {
print("未成年")
}
let age = 8
if case 0..<18 = age where age % 3 == 0 {
print("未成年,而且年紀(jì)是3的倍數(shù)!")
}
這是swift2.x時(shí)候的語(yǔ)法了,3.0之后需要將where改成逗號(hào)
let age = 8
if case 0..<18 = age , age % 3 == 0 {
print("未成年,而且年紀(jì)是3的倍數(shù)!")
}
for case 結(jié)合使用
如果需要找出1-100內(nèi)能夠整除3的數(shù),我之前一般是這么做
for i in 1...100 {
if i % 3 == 0 {
print(i)
}
}
使用for case 語(yǔ)句可以簡(jiǎn)化不少
for case let i in 1...100 where i % 3 == 0 {
print(i)
}
沒(méi)有了多對(duì){}的匹配,代碼更加簡(jiǎn)潔易讀
特定情況下,對(duì)case where的理解足夠深刻的情況下,合理的應(yīng)用,可以很好的縮短代碼,最主要的是能夠提高代碼可讀性.這也是swift所提倡的代碼簡(jiǎn)潔性.