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

Swift編程中的switch...case語(yǔ)句實(shí)例解析

 更新時(shí)間:2016年04月13日 14:16:04   作者:Walden_tinghou  
這篇文章主要介紹了Swift編程中的switch...case語(yǔ)句實(shí)例解析,其中重點(diǎn)還是對(duì)于fallthrough關(guān)鍵字用法的講解,需要的朋友可以參考下

Swift中的switch...case語(yǔ)句可以判斷對(duì)象類(lèi)型, Objective-C中則必須是整數(shù)。
不可以穿透,可以不寫(xiě)break,

var rank = "A"
switch rank{
  case "A": //相當(dāng)于if
    print("優(yōu)")
  case "B": // 相當(dāng)于else if
    print("優(yōu)")
  case "C": // 相當(dāng)于else if
    print("優(yōu)")
  default: // 相當(dāng)于else
    print("沒(méi)有評(píng)級(jí)")
}


因?yàn)椴荒艽┩杆圆荒苓@么寫(xiě)

var rank1 = "A"
switch rank1{
  case "A":
  case "B":
    print("優(yōu)")
  case "C":
    print("優(yōu)")
  default:
    print("沒(méi)有評(píng)級(jí)")
}


只能這么寫(xiě)

var rank1 = "A"
switch rank1{
  case "A", "B": // 注意OC不能這樣寫(xiě)
    print("優(yōu)")
  case "C":
    print("差")
  default:
    print("沒(méi)有評(píng)級(jí)")
}

不能不寫(xiě)default

var rank2 = "A"
switch rank2{
  case "A":
    print("優(yōu)")
  case "B":
    print("良")
  case "C":
    print("差")
}

default位置只能在最后

var rank3 = "A"
switch rank3{
  default:
    print("沒(méi)有評(píng)級(jí)")
  case "A":
    print("優(yōu)")
  case "B":
    print("良")
  case "C":
    print("差")
}

在case中定義變量不用加大括號(hào)

var rank4 = "A"
switch rank4{
  case "A":
    var num = 10
    print("優(yōu)")
  case "B":
    print("良")
  case "C":
    print("差")
  default:
    print("沒(méi)有評(píng)級(jí)")
}

區(qū)間和元祖匹配

var num = 10;
switch num{
  case 1...9:
    print("個(gè)位數(shù)")
  case 10...99:
    print("十位數(shù)")
  default:
    print("其它數(shù)")
}
var point = (10, 15)
switch point{
  case (0, 0):
    print("坐標(biāo)在原點(diǎn)")
  case (1...10, 10...20): // 可以在元祖中再加上區(qū)間
    print("坐標(biāo)的X和Y在1~10之間")
  case (_, 0): // X可以是任意數(shù)
    print("坐標(biāo)的X在X軸上")
  default:
    print("Other")
}

值綁定

var point = (1, 10)
switch point{
  case (var x, 10): // 會(huì)將point中X的值賦值給X
    print("x= \(x)")
  case (var x, var y): // 會(huì)將point中XY的值賦值給XY
    print("x= \(x) y= \(y)")
  case var( x, y):
    print("x= \(x) y= \(y)")
  default:
    print("Other")
}

根據(jù)條件綁定

var point = (100, 10)
switch point{
  // 只有where后面的條件表達(dá)式為真才賦值并執(zhí)行case后的語(yǔ)句
  case var(x, y) where x > y: 
    print("x= \(x) y= \(y)")
  default:
    print("Other")
}

fallthrough關(guān)鍵字
Swift語(yǔ)言中的switch不會(huì)從上一個(gè)case分支落入到下一個(gè)case分支中。相反,只要第一個(gè)匹配到的case分支完成了它需要執(zhí)行的語(yǔ)句,整個(gè)switch代碼塊完成了它的執(zhí)行。相比之下,C語(yǔ)言要求你顯示的插入break語(yǔ)句到每個(gè)switch分支的末尾來(lái)阻止自動(dòng)落入到下一個(gè)case分支中。Swift語(yǔ)言的這種避免默認(rèn)落入到下一個(gè)分支中的特性意味著它的switch 功能要比C語(yǔ)言的更加清晰和可預(yù)測(cè),可以避免無(wú)意識(shí)地執(zhí)行多個(gè)case分支從而引發(fā)的錯(cuò)誤。
 
如果你確實(shí)需要C風(fēng)格的落入(fallthrough)的特性,你可以在每個(gè)需要該特性的case分支中使用fallthrough關(guān)鍵字。下面的例子使用fallthrough來(lái)創(chuàng)建一個(gè)數(shù)字的描述語(yǔ)句。

let integerToDescribe = 5 
var description = "The number \(integerToDescribe) is" 
switch integerToDescribe { 
case 2, 3, 5, 7, 11, 13, 17, 19: 
  description += " a prime number, and also" 
  fallthrough 
default: 
  description += " an integer." 
} 
println(description) 
// prints "The number 5 is a prime number, and also an integer." 

這個(gè)例子定義了一個(gè)String類(lèi)型的變量description并且給它設(shè)置了一個(gè)初始值。函數(shù)使用switch邏輯來(lái)判斷integerToDescribe變量的值。當(dāng)integerToDescribe的值屬于列表中的質(zhì)數(shù)之一時(shí),該函數(shù)添加一段文字在description后,來(lái)表明這個(gè)是數(shù)字是一個(gè)質(zhì)數(shù)。然后它使用fallthrough關(guān)鍵字來(lái)"落入"到default分支中。default分支添加一段額外的文字在description的最后,至此switch代碼塊執(zhí)行完了。
 
如果integerToDescribe的值不屬于列表中的任何質(zhì)數(shù),那么它不會(huì)匹配到第一個(gè)switch分支。而這里沒(méi)有其他特別的分支情況,所以integerToDescribe匹配到包含所有的default分支中。
 
當(dāng)switch代碼塊執(zhí)行完后,使用println函數(shù)打印該數(shù)字的描述。在這個(gè)例子中,數(shù)字5被準(zhǔn)確的識(shí)別為了一個(gè)質(zhì)數(shù)。
 
NOTE:fallthrough關(guān)鍵字不會(huì)檢查它下一個(gè)將會(huì)落入執(zhí)行的case中的匹配條件。fallthrough簡(jiǎn)單地使代碼執(zhí)行繼續(xù)連接到下一個(gè)case中的執(zhí)行代碼,這和C語(yǔ)言標(biāo)準(zhǔn)中的switch語(yǔ)句特性是一樣的。

相關(guān)文章

  • Swift使用enum抹平數(shù)組元素差異實(shí)例詳解

    Swift使用enum抹平數(shù)組元素差異實(shí)例詳解

    這篇文章主要為大家介紹了Swift使用enum抹平數(shù)組元素差異實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift?中?Opaque?Types學(xué)習(xí)指南

    Swift?中?Opaque?Types學(xué)習(xí)指南

    這篇文章主要為大家介紹了Swift?中?Opaque?Types學(xué)習(xí)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Swift?Sequence?Collection使用示例學(xué)習(xí)

    Swift?Sequence?Collection使用示例學(xué)習(xí)

    這篇文章主要為大家介紹了Swift?Sequence?Collection使用示例學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • swift依賴(lài)注入和依賴(lài)注入容器詳解

    swift依賴(lài)注入和依賴(lài)注入容器詳解

    這篇文章主要為大家介紹了swift依賴(lài)注入和依賴(lài)注入容器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Swift快速集成下拉刷新和上拉加載更多示例代碼

    Swift快速集成下拉刷新和上拉加載更多示例代碼

    這篇文章主要介紹了Swift快速集成下拉刷新和上拉加載更多示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Swift語(yǔ)言中字符串相關(guān)的基本概念解析

    Swift語(yǔ)言中字符串相關(guān)的基本概念解析

    這篇文章主要介紹了Swift語(yǔ)言中字符串相關(guān)的基本概念解析,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Swift進(jìn)階教程Mirror反射示例詳解

    Swift進(jìn)階教程Mirror反射示例詳解

    這篇文章主要為大家介紹了Swift進(jìn)階教程Mirror反射示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    這篇文章主要給大家分享了關(guān)于Swift 4中一些實(shí)用的數(shù)組技巧,文中通過(guò)示例代碼介紹的介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • swift guard關(guān)鍵字詳解及使用

    swift guard關(guān)鍵字詳解及使用

    這篇文章主要介紹了swift guard關(guān)鍵字詳解及使用的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • swift控件工廠類(lèi)的實(shí)現(xiàn)代碼

    swift控件工廠類(lèi)的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了swift控件工廠類(lèi)的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評(píng)論

墨竹工卡县| 临洮县| 郓城县| 八宿县| 望江县| 涿州市| 云梦县| 城固县| 白沙| 曲水县| 东兰县| 探索| 嘉祥县| 沾化县| 蒙城县| 石棉县| 军事| 盘锦市| 射阳县| 宁阳县| 吉林省| 友谊县| 且末县| 珠海市| 白玉县| 涟源市| 东源县| 盐山县| 丰宁| 达日县| 汝阳县| 乳源| 佛学| 巴青县| 太仓市| 成都市| 得荣县| 靖宇县| 清流县| 南汇区| 湟中县|