之前初識Swift中的Switch語句時,真的是讓人眼前一亮,Swift中Switch語句有好多特有而且特好用的功能。說到Switch, 只要是寫過程序的小伙伴對Switch並不陌生。其在程序中的出鏡率還是比較高檔。Switch屬於程序的分支語句,Switch的功能便於處理多個分支的較為復雜點的邏輯分支。能用Switch實現的代碼都可以使用多個if-else分支語句進行替換。
今天這篇博客就是要看一下Swift中的Switch的不同之處,來總結一下Switch不同的特性。在Swift語言中的Switch中,你可以匹配數字,字符串,元組,字符區間等。並且還可以進行數值綁定,以及在case中使用where子句(SQL中經常使用Where子句)。默認的Switch語句中是不需要添加break語句的,因為其默認就是只執行一個case語句就結束,除非你添加上fallthrough。具體的內容還是看下方的小實例吧。
一、Switch語句的匹配類型
Switch語句不僅像其他語言那樣支持匹配數字,在Swift語言中的Switch還支持其他現代編程語言所不支持的數據類型,比如字符串,元組,字符區間等。下方會通過一系列的實例來介紹一下Switch語句的用法。在Switch語句中,默認是執行一條符合的case就結束整個Switch語句,如果你想移除執行多個case子句,后面的部分會介紹到。Switch和枚舉一般是形影不離的,鑒於本篇博客是介紹Switch語句的,所以我們就不使用枚舉定義匹配項了,不過在正式開放中,最好還是把匹配項定義成枚舉的形式,關於Swift中的枚舉的內容請參考前面發布的一片博客《窺探Swift之別樣的枚舉類型》
1.使用Switch匹配數字
使用Switch匹配數字這部分和其他語言一樣,不過Swift中的Switch是不需要使用break語句的,因為其默認執行完匹配項就跳出Switch語句了。下方是把數字1,2,3轉換成“老大”,“老二”,“超生了”的字符串。由實例可知,匹配完 2 后,即使沒加break語句,也不會繼續執行后邊的case語句了,這一點還是比較人性化的。實例比較簡單,就不做過多贅述了。
2.使用Switch匹配字符串
這是一個非常值得興奮的一個特性,在其他一些編程語言中(比如OC)是不支持匹配字符的。在Swift中的Switch語句就支持匹配字符串。下方是一個匹配美女的Switch-case的一個實例,如果你碰到“鳳姐”這樣的大“美女”,那么你就只能呵呵啦~。請看下方實例:
3.使用Switch語句匹配數字區間
這個特性也是灰常不錯的,在Swift中有區間運算符(1...5 表示1到5這個區間中的所有整數)。如果匹配的值是整數,那么我們可以在Case匹配條件中使用區間。下方就是一個匹配數字區間的一個實例,salary是月薪,我們將通過這個月薪分一下等級,這時我們就會用到區間了。具體如下:
4.匹配元組
元組可以可以作為case的條件的,元組在case中的用法還是比較靈活的。在case條件中,我們可以使用下划線來忽略元組中的某一項。並且我們還可以在元組中的一些項中使用區間運算符。在元組匹配中如果你想忽略掉元組中的一項,可以使用下划線進行忽略即可。下方就是一個元組匹配的實例,如下所示。
上面的例子是在匹配元組時忽略不需要匹配的元組匹配項,接下來我們還可以把不匹配的值通過參數的形式傳到case后方的子語句塊中。這也就是Switch中的數值綁定,具體實例如下所示:
二、Where子句
在SQL中Where子句的出鏡率是比較高的,但是出現Switch-Case分支語句中實不多見。Where子句在SQL中后面跟的是條件,在Switch-Case中的Where子句也是如此,后方跟的也是條件。Where子句要結合着上方的介紹的數值綁定來使用,加上Where子句,Swith-Case分支語句的功能就更為強大,可謂是提升了一個能量級。下方是在元組匹配中結合數值綁定使用Where子句,Case和Where后的條件都滿足時才會執行該Case后方的語句塊。具體實例如下:
上面的實例是在元組匹配中結合着數值綁定來使用的Where子句,下方我們是在字符串匹配中使用Where子句。道理是一樣的,就不做過多贅述了,直接代碼走起:
Switch-Case語句中引入Where子句可謂是完全可以替代if - else 語句的分支。Where子句使得Switch-Case語句中的條件更為靈活多變,使其更為強大。這一點也是Swift中Switch的強大之處。
今天的博客就先到這兒,關於if-esle分支語句,for, while等循環語句就不做過多贅述了。因為其比較較簡單,沒有太多讓人眼前一亮的東西。