程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Swift中的前提切換語句switch...case進修教程

Swift中的前提切換語句switch...case進修教程

編輯:更多關於編程

Swift中的前提切換語句switch...case進修教程。本站提示廣大學習愛好者:(Swift中的前提切換語句switch...case進修教程)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift中的前提切換語句switch...case進修教程正文


語法
Swift 說話中 switch 語句的語法:

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

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

留意:在年夜多半說話中,switch 語句塊中,case 要緊跟 break,不然 case 以後的語句會次序運轉,而在 Swift 說話中,默許是不會履行下去的,switch 也會終止。假如你想在 Swift 中讓 case 以後的語句會按次序持續運轉,則須要應用 fallthrough 語句。
須要留意的處所有兩點:
Switch固然也支撐顯式的break,平日只要一種情形下你會這麼做,那就是當你也不想在default裡做任何工作的時刻,這個時刻你便可以在default裡顯式地加上一句break。
fallthrough其實不是在任何情形下都有用,當你在Switch裡應用Value Binding技巧的時刻,fallthrough就被制止了。Value Binding鄙人面會講到。

支撐多種數據類型
在Objective-C裡,Switch語句只能支撐整形的數據(或許一個字符),然則在Swift裡,Switch能支撐多種數據類型,包含浮點、布爾、字符串等:
支撐浮點:

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" 
}
 
可以說是史上支撐數據類型最多的Switch了。

支撐區間運算符
不只僅是輪回構造裡可以用區間運算符,在Switch裡異樣可以用區間運算符:

var i = 15 
switch i { 
    case 0 ... 10: 
        "0~10" 
    case 11 ... 20: 
        "11~20" //被輸入 
    default: 
        "default" 
}
 
對某個數值區間停止批量婚配,如許是否是很酷?浮點數也異樣支撐區間運算符。

支撐元組
作為被年夜年夜加強的Switch,元組也是被支撐的:

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

應用元組和應用其他數據類型分歧,不外元組還有一項特色,關於不想關懷的值,可以用下劃線_跳過,如:

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

那末在應用Switch時,異樣支撐這項特征:

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


關於不關懷的值跳過,只需知足另外一個值就好了。須要留意一點的是,假如元組中的值也是數字類型,那末也是可以用區間運算符的:

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,這是編譯器所不許可的,你能夠會收到如許一個編譯毛病:
 
只需把上面的errorCode去失落就好了,固然,斟酌好本身的邏輯。

支撐額定的邏輯斷定
在應用Switch語句時,Switch會恰當地導向響應的case部門,這其實就相當於做了一次邏輯斷定,但Swift的Switch語句還支撐額定的邏輯斷定:

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


這異樣很酷,信任在某種情形下會派上年夜用處。

總結
Swift對Switch停止了年夜年夜加強,使Switch的靈巧性獲得了很年夜晉升,這是沖動人心的轉變,然則假如掌控欠好個中的變更,能夠會使你在停止毛病排查時增長難度,也會使代碼龐雜度變高。在恰當地時刻靈巧應用,堅持腦筋清楚老是無益的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved