最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift中的條件切換語句switch...case學習教程

 更新時間:2016年04月13日 11:16:45   作者:Bannings  
這篇文章主要介紹了Swift中的條件切換語句switch...case學習教程,Swift中的switch...case支持的數(shù)據(jù)類型很多,非常之強大,需要的朋友可以參考下

語法
Swift 語言中 switch 語句的語法:

復制代碼 代碼如下:

switch expression {
   case expression1  :
      statement(s)
      fallthrough /* 可選 */
   case expression2, expression3  :
      statement(s)
      fallthrough /* 可選 */

   default : /* 可選 */
      statement(s);
}


注意:在大多數(shù)語言中,switch 語句塊中,case 要緊跟 break,否則 case 之后的語句會順序運行,而在 Swift 語言中,默認是不會執(zhí)行下去的,switch 也會終止。如果你想在 Swift 中讓 case 之后的語句會按順序繼續(xù)運行,則需要使用 fallthrough 語句。
需要注意的地方有兩點:
Switch當然也支持顯式的break,通常只有一種情況下你會這么做,那就是當你也不想在default里做任何事情的時候,這個時候你就可以在default里顯式地加上一句break。
fallthrough并不是在任何情況下都有效,當你在Switch里使用Value Binding技術的時候,fallthrough就被禁止了。Value Binding在下面會講到。

支持多種數(shù)據(jù)類型
在Objective-C里,Switch語句只能支持整形的數(shù)據(jù)(或者一個字符),但是在Swift里,Switch能支持多種數(shù)據(jù)類型,包括浮點、布爾、字符串等:
支持浮點:

復制代碼 代碼如下:

let float = 1.5 
switch float { 
    case 1.5: 
        "1.5"   //被輸出 
    default: 
        "default" 


支持布爾:
復制代碼 代碼如下:

let isSuccess = true 
switch isSuccess { 
    case true: 
        "true"   //被輸出 
    default: 
        "default" 


支持字符串:
復制代碼 代碼如下:

let name = "Bannings" 
switch name { 
    case "Bannings": 
        "Bannings"   //被輸出 
    default: 
        "default" 
}
 
可以說是史上支持數(shù)據(jù)類型最多的Switch了。

支持區(qū)間運算符
不僅僅是循環(huán)結(jié)構(gòu)里可以用區(qū)間運算符,在Switch里同樣可以用區(qū)間運算符:

復制代碼 代碼如下:

var i = 15 
switch i { 
    case 0 ... 10: 
        "0~10" 
    case 11 ... 20: 
        "11~20" //被輸出 
    default: 
        "default" 
}
 
對某個數(shù)值區(qū)間進行批量匹配,這樣是不是很酷?浮點數(shù)也同樣支持區(qū)間運算符。

支持元組
作為被大大增強的Switch,元組也是被支持的:

復制代碼 代碼如下:

let request = (true,"success") 
switch request { 
    case (true, "success"): 
        "success"   //被輸出 
    case (false, "failed"): 
        "failed" 
    default: 
        "default" 
}

使用元組和使用其他數(shù)據(jù)類型一致,不過元組還有一項特點,對于不想關心的值,可以用下劃線_跳過,如:
復制代碼 代碼如下:

let (name,  _, age) = ("Bannings" ,true, 22) 

那么在使用Switch時,同樣支持這項特性:
復制代碼 代碼如下:

let request = (true,"success") 
switch request { 
    case (_, "success"): 
        "success"   //被輸出 
    case (false, _): 
        "failed" 
    default: 
        "default" 


對于不關心的值跳過,只要滿足另一個值就行了。需要注意一點的是,如果元組中的值也是數(shù)字類型,那么也是可以用區(qū)間運算符的:
復制代碼 代碼如下:

let request = (10,"failed") 
switch request { 
    case (_, "success"): 
        "success" 
    case (1 ... 10, _): 
        "1~10"    //被輸出 
    default: 
        "default" 


Value Binding
針對元組,Switch還支持類似于Optional Binding的Value Binding,就是能把元組中的各個值提取出來,然后直接在下面使用:
復制代碼 代碼如下:

let request = (0,"success") 
switch request { 
    case (0, let state): 
        state    //被輸出:success 
    case (let errorCode, _): 
        "error code is \(errorCode)" 
}  // 涵蓋了所有可能的case,不用寫default了 

這樣也是可以的:
復制代碼 代碼如下:

let request = (0,"success") 
switch request { 
    case let (errorCode, state): 
        state    //被輸出:success 
    case (let errorCode, _): 
        "error code is \(errorCode)" 


把let放在外面和放在里面為每一個元素單獨寫上let是等價的。
當你在一個case里使用Value Binding的時候,如果你同時也在它的上一個case里使用了fallthrough,這是編譯器所不允許的,你可能會收到這樣一個編譯錯誤:
 2016413111645305.jpg (590×121)
只要把下面的errorCode去掉就行了,當然,考慮好自己的邏輯。

支持額外的邏輯判斷
在使用Switch語句時,Switch會適當?shù)貙蛳鄳腸ase部分,這其實就相當于做了一次邏輯判斷,但Swift的Switch語句還支持額外的邏輯判斷:

復制代碼 代碼如下:

let request = (0,"success") 
switch request { 
    case (0, let state) where state != "success": 
        state 
    case (let errorCode, _): 
        "error code is \(errorCode)"http://被輸出:"error code is 0" 


這同樣很酷,相信在某種情況下會派上大用場。

總結(jié)
Swift對Switch進行了大大增強,使Switch的靈活性得到了很大提升,這是激動人心的改變,但是如果掌控不好其中的變化,可能會使你在進行錯誤排查時增加難度,也會使代碼復雜度變高。在適當?shù)貢r候靈活運用,保持頭腦清晰總是有益的。

相關文章

  • SwiftUI 中創(chuàng)建反彈動畫的實現(xiàn)

    SwiftUI 中創(chuàng)建反彈動畫的實現(xiàn)

    這篇文章主要介紹了SwiftUI 中創(chuàng)建反彈動畫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Swift、Objective-C、Cocoa混合編程設置指南

    Swift、Objective-C、Cocoa混合編程設置指南

    這篇文章主要介紹了Swift、Objective-C、Cocoa混合編程設置指南,需要的朋友可以參考下
    2014-07-07
  • swift 3.0中realm封裝類示例代碼

    swift 3.0中realm封裝類示例代碼

    這篇文章主要給大家介紹了關于swift 3.0中realm封裝類的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用swift具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • 關于swift的個人小結(jié)

    關于swift的個人小結(jié)

    本文是個人對于目前學習swift的一些心得的匯總,這里分享給大家,希望大家能夠喜歡
    2016-12-12
  • Swift學習筆記之構(gòu)造器重載

    Swift學習筆記之構(gòu)造器重載

    Swift 將為所有屬性已提供默認值的且自身沒有定義任何構(gòu)造器的結(jié)構(gòu)體或基類,提供一個默認的構(gòu)造器。這個默認構(gòu)造器將簡單的創(chuàng)建一個所有屬性值都設置為默認值的實例。
    2014-11-11
  • swift3.0指紋解鎖的實現(xiàn)方法

    swift3.0指紋解鎖的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了swift3.0指紋解鎖的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Swift實現(xiàn)快速排序算法的代碼示例

    Swift實現(xiàn)快速排序算法的代碼示例

    這篇文章主要介紹了Swift實現(xiàn)快速排序算法的代碼示例,首先利用分治法講解了快速排序的思路,需要的朋友可以參考下
    2016-07-07
  • Swift初始化方法的使用介紹

    Swift初始化方法的使用介紹

    Swift有著超級嚴格的初始化方法,不僅強化了designated初始化方法的地位,所有不加修飾的init方法都需要在方法中確保非Optional的實例變量被賦值初始化,下面這篇文章主要給大家介紹了關于Swift中初始化init的相關資料,需要的朋友可以參考下。
    2022-08-08
  • Swift中動態(tài)調(diào)用實例方法介紹

    Swift中動態(tài)調(diào)用實例方法介紹

    這篇文章主要介紹了Swift中動態(tài)調(diào)用實例方法介紹,在Swift中有一類很有意思的寫法,可以讓我們不直接使用實例來調(diào)用這個實例上的方法,而是通過類型取出這個類型的某個實例方法的簽名,然后再通過傳遞實例來拿到實際需要調(diào)用的方法,需要的朋友可以參考下
    2015-01-01
  • swift中可選值?和!使用的方法示例

    swift中可選值?和!使用的方法示例

    這篇文章主要給大家介紹了關于swift中可選值?和!使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11

最新評論

贵南县| 福贡县| 卫辉市| 台中县| 洛宁县| 池州市| 牡丹江市| 得荣县| 溧阳市| 崇义县| 墨玉县| 德州市| 沙田区| 镇平县| 定兴县| 鹤峰县| 雷山县| 台中市| 建昌县| 公安县| 乌苏市| 大同县| 曲阜市| 鲁甸县| 图木舒克市| 馆陶县| 双辽市| 宁波市| 惠安县| 南安市| 临汾市| 庆阳市| 西宁市| 陇西县| 沅陵县| 新丰县| 石台县| 青河县| 宜章县| 澳门| 柳州市|