亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

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

2020-03-09 17:49:04
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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,這是編譯器所不允許的,你可能會收到這樣一個編譯錯誤:
 條件切換語句,case,Swift
只要把下面的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的靈活性得到了很大提升,這是激動人心的改變,但是如果掌控不好其中的變化,可能會使你在進行錯誤排查時增加難度,也會使代碼復雜度變高。在適當地時候靈活運用,保持頭腦清晰總是有益的。



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日韩一区二区| 成人亚洲综合色就1024| 成人a视频在线观看| 在线精品高清中文字幕| 中文字幕av日韩| 精品成人国产在线观看男人呻吟| 亚洲第一福利在线观看| 亚洲精品视频在线观看视频| 欧美一区三区三区高中清蜜桃| 另类色图亚洲色图| 日韩中文字幕在线视频| 国产婷婷色综合av蜜臀av| 91在线视频导航| 亚洲男人第一网站| 亚洲精品福利资源站| 精品久久久久久久久久久| 综合激情国产一区| 97香蕉久久夜色精品国产| 国产精品www色诱视频| 欧美性xxxxx极品娇小| 亚洲人成在线免费观看| 神马国产精品影院av| 欧美精品久久久久久久免费观看| 成人免费直播live| 欧美成人激情视频免费观看| 亚洲精品黄网在线观看| 中文字幕日韩高清| 欧美激情手机在线视频| 日韩成人av在线播放| 色哟哟网站入口亚洲精品| 国产成人高潮免费观看精品| 91高清免费视频| 中文字幕久久亚洲| 久久久精品视频在线观看| 亚洲字幕在线观看| 国产国产精品人在线视| 在线观看中文字幕亚洲| 91精品国产一区| 在线播放国产一区二区三区| 欧美日韩国产精品一区二区不卡中文| 亚洲激情免费观看| 国产精品成人av在线| 国产精品久久久久久网站| 亚洲综合在线小说| 国产成人拍精品视频午夜网站| 九九精品视频在线观看| 91国内精品久久| 美女999久久久精品视频| 久久久久久久久综合| 欧美国产日产韩国视频| 中文日韩电影网站| 亚洲www在线观看| 一区二区在线视频| 欧美激情一级欧美精品| 欧美激情综合色综合啪啪五月| 97久久超碰福利国产精品…| 国产精品最新在线观看| 亚洲精品欧美日韩专区| 久久久免费精品视频| 国产欧美日韩专区发布| 亚洲sss综合天堂久久| 久久久97精品| 日本高清+成人网在线观看| 日韩电影在线观看永久视频免费网站| 最近2019中文字幕mv免费看| 欧美乱大交xxxxx另类电影| 欧美日韩国产综合视频在线观看中文| 91精品中国老女人| 青青草原成人在线视频| 国产成人精品免费视频| 92裸体在线视频网站| 欧美午夜无遮挡| 久久91亚洲人成电影网站| 亚洲新中文字幕| 91av免费观看91av精品在线| 国产精品高潮呻吟久久av无限| 国产亚洲视频在线| 色综合久久悠悠| 欧美日韩激情美女| 亚洲精品按摩视频| 国产精品第一第二| 欧美激情乱人伦| 亚洲精品国产欧美| 7777kkkk成人观看| 欧美丰满少妇xxxx| 欧美夫妻性生活xx| 精品国产乱码久久久久久婷婷| 亚洲欧美国产高清va在线播| 亚洲欧洲美洲在线综合| 国产精品美女www| 久久久亚洲欧洲日产国码aⅴ| 国产成一区二区| 日韩中文字幕在线看| 亚洲男人第一网站| 亚洲天堂av图片| 国产亚洲精品久久久久久| 国内精品视频一区| 日本一欧美一欧美一亚洲视频| 国产精品三级网站| 精品视频在线播放免| 精品视频www| 成人激情综合网| 久久天堂av综合合色| 日韩国产在线播放| 日韩电影第一页| 国产69精品久久久久久| 国产精品爽黄69| 92国产精品视频| 亚洲va男人天堂| 美女av一区二区| 美日韩精品免费视频| 欧美大学生性色视频| 91欧美精品成人综合在线观看| 亚洲xxxx3d| 美女视频黄免费的亚洲男人天堂| 色噜噜国产精品视频一区二区| 亚洲欧洲激情在线| 国产精品va在线播放我和闺蜜| 国产成人激情小视频| 成人a在线视频| 欧美久久精品午夜青青大伊人| 久久国产精品久久久久久久久久| 伊人久久免费视频| 国产视频亚洲精品| 欧美日韩激情网| 欧美一区第一页| 懂色aⅴ精品一区二区三区蜜月| 久久久爽爽爽美女图片| 国产区精品在线观看| 亚洲美女久久久| 日韩一区二区av| 精品日韩美女的视频高清| 亚洲男人的天堂在线| 成人精品网站在线观看| 97在线视频一区| 在线视频日本亚洲性| 精品中文字幕乱| 亚洲欧美国产视频| 国自在线精品视频| 亚洲视频电影图片偷拍一区| 国产精品国产三级国产aⅴ9色| 精品成人在线视频| 精品久久久久久久久久久久久| 亚洲国产福利在线| 九九热99久久久国产盗摄| 久久亚洲综合国产精品99麻豆精品福利| 欧美日韩中文字幕综合视频| 欧美日韩亚洲一区二| 亚洲日本成人网| 欧美肥臀大乳一区二区免费视频| 国产欧美日韩中文字幕在线| 国产精品吴梦梦| 欧美成人午夜激情视频| 国产精品69久久久久| 国产精品一二区| 国产免费一区二区三区在线观看| 欧美性极品xxxx娇小| 欧美中文在线观看| 欧美成人精品一区二区| 成人精品久久一区二区三区| 青草青草久热精品视频在线观看| 国产视频福利一区| 欧美一级黄色网| 欧美精品日韩www.p站|