swift中的case where精準(zhǔn)匹配

在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)潔性.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容