之前初識Swift中的Switch語句時,真的是讓人眼前一亮,Swift中Switch語句有好多特有而且特好用的功能。說到Switch, 只要是寫過程序的小伙伴對Switch并不陌生。其在程序中的出鏡率還是比較高檔。Switch屬于程序的分支語句,Switch的功能便于處理多個分支的較為復(fù)雜點的邏輯分支。能用Switch實現(xiàn)的代碼都可以使用多個if-else分支語句進行替換。
今天這篇博客就是要看一下Swift中的Switch的不同之處,來總結(jié)一下Switch不同的特性。在Swift語言中的Switch中,你可以匹配數(shù)字,字符串,元組,字符區(qū)間等。并且還可以進行數(shù)值綁定,以及在case中使用where子句(SQL中經(jīng)常使用Where子句)。默認(rèn)的Switch語句中是不需要添加break語句的,因為其默認(rèn)就是只執(zhí)行一個case語句就結(jié)束,除非你添加上fallthrough。具體的內(nèi)容還是看下方的小實例吧。
一、Switch語句的匹配類型
Switch語句不僅像其他語言那樣支持匹配數(shù)字,在Swift語言中的Switch還支持其他現(xiàn)代編程語言所不支持的數(shù)據(jù)類型,比如字符串,元組,字符區(qū)間等。下方會通過一系列的實例來介紹一下Switch語句的用法。在Switch語句中,默認(rèn)是執(zhí)行一條符合的case就結(jié)束整個Switch語句,如果你想移除執(zhí)行多個case子句,后面的部分會介紹到。Switch和枚舉一般是形影不離的,鑒于本篇博客是介紹Switch語句的,所以我們就不使用枚舉定義匹配項了,不過在正式開放中,最好還是把匹配項定義成枚舉的形式,關(guān)于Swift中的枚舉的內(nèi)容請參考前面發(fā)布的一片博客《窺探Swift之別樣的枚舉類型》
1.使用Switch匹配數(shù)字
使用Switch匹配數(shù)字這部分和其他語言一樣,不過Swift中的Switch是不需要使用break語句的,因為其默認(rèn)執(zhí)行完匹配項就跳出Switch語句了。下方是把數(shù)字1,2,3轉(zhuǎn)換成“老大”,“老二”,“超生了”的字符串。由實例可知,匹配完 2 后,即使沒加break語句,也不會繼續(xù)執(zhí)行后邊的case語句了,這一點還是比較人性化的。實例比較簡單,就不做過多贅述了。
2.使用Switch匹配字符串
這是一個非常值得興奮的一個特性,在其他一些編程語言中(比如OC)是不支持匹配字符的。在Swift中的Switch語句就支持匹配字符串。下方是一個匹配美女的Switch-case的一個實例,如果你碰到“鳳姐”這樣的大“美女”,那么你就只能呵呵啦~。請看下方實例:
3.使用Switch語句匹配數(shù)字區(qū)間
這個特性也是灰常不錯的,在Swift中有區(qū)間運算符(1...5 表示1到5這個區(qū)間中的所有整數(shù))。如果匹配的值是整數(shù),那么我們可以在Case匹配條件中使用區(qū)間。下方就是一個匹配數(shù)字區(qū)間的一個實例,salary是月薪,我們將通過這個月薪分一下等級,這時我們就會用到區(qū)間了。具體如下:
4.匹配元組
元組可以可以作為case的條件的,元組在case中的用法還是比較靈活的。在case條件中,我們可以使用下劃線來忽略元組中的某一項。并且我們還可以在元組中的一些項中使用區(qū)間運算符。在元組匹配中如果你想忽略掉元組中的一項,可以使用下劃線進行忽略即可。下方就是一個元組匹配的實例,如下所示。
上面的例子是在匹配元組時忽略不需要匹配的元組匹配項,接下來我們還可以把不匹配的值通過參數(shù)的形式傳到case后方的子語句塊中。這也就是Switch中的數(shù)值綁定,具體實例如下所示:
二、Where子句
在SQL中Where子句的出鏡率是比較高的,但是出現(xiàn)Switch-Case分支語句中實不多見。Where子句在SQL中后面跟的是條件,在Switch-Case中的Where子句也是如此,后方跟的也是條件。Where子句要結(jié)合著上方的介紹的數(shù)值綁定來使用,加上Where子句,Swith-Case分支語句的功能就更為強大,可謂是提升了一個能量級。下方是在元組匹配中結(jié)合數(shù)值綁定使用Where子句,Case和Where后的條件都滿足時才會執(zhí)行該Case后方的語句塊。具體實例如下:
上面的實例是在元組匹配中結(jié)合著數(shù)值綁定來使用的Where子句,下方我們是在字符串匹配中使用Where子句。道理是一樣的,就不做過多贅述了,直接代碼走起:
Switch-Case語句中引入Where子句可謂是完全可以替代if - else 語句的分支。Where子句使得Switch-Case語句中的條件更為靈活多變,使其更為強大。這一點也是Swift中Switch的強大之處。
今天的博客就先到這兒,關(guān)于if-esle分支語句,for, while等循環(huán)語句就不做過多贅述了。因為其比較較簡單,沒有太多讓人眼前一亮的東西。
作者:青玉伏案
出處:http://www.cnblogs.com/ludashi/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
如果文中有什么錯誤,歡迎指出。以免更多的人被誤導(dǎo)。