窺探Swift程式設計之強大的Switch

2021-09-07 04:20:27 字數 2604 閱讀 8812

之前初識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等迴圈語句就不做過多贅述了。因為其比較較簡單,沒有太多讓人眼前一亮的東西。

Swift學習 Swift程式設計之旅(一)

學習一門新語言最經典的例子就是輸出 hello world!print hello world swift就是這樣來輸出的。如果你使用過其他語言,那麼看上去是非常的熟悉吧。但比一些c要簡單的多吧 1 不需要匯入一些單獨的庫,比如輸入 輸出或字串處理功能的類庫,2 不需要在全域性範圍內編寫的 用於作為...

Swift學習 Swift程式設計之旅(二)

在本節將介紹一些最基礎的知識 swift提供自己版本的型別,下面說明幾種簡單的型別 int 整型double和float 浮點型 string 字串型 bool 布林型 它也提供了3種主要的強大的集合型別,set集合,array陣列,dictionary字典 和c一樣,swift通過變數類儲存並通過...

窺探Swift之別樣的列舉型別

想必寫過程式的童鞋對列舉型別並不陌生吧,使用列舉型別的好處是多多的,在這兒就不做過多的贅述了。fundation框架和uikit中的列舉更是數不勝數,列舉可以使你的 更易閱讀並且可以提高可維護性。在swift語言中的列舉可謂是讓人眼前一亮。在swift中的列舉不僅保留了大部分程式語言中列舉的特性,同...