switch語(yǔ)句提供多分支的程序結(jié)構(gòu)宫莱。Swift中的switch語(yǔ)句可以使用整數(shù)只酥、浮點(diǎn)數(shù)、字符遍希、字符 串和元組等類型,而且它的數(shù)值可以是離散的也可以是連續(xù)的范圍等曼。
下面我們先介紹一下switch語(yǔ)句基本形式的語(yǔ)法結(jié)構(gòu),如下所示
switch 條件表達(dá)式{
case 值1:
語(yǔ)句塊1
case 值2,值3:
語(yǔ)句塊2
case塊3:
語(yǔ)句塊3
...case 判斷值n:
語(yǔ)句塊n
default:
語(yǔ)句塊n+1
}
每個(gè)case后面可以跟一個(gè)或多個(gè)值,多個(gè)值之間用逗號(hào)分隔。每個(gè)switch必須有一個(gè)default語(yǔ)句,它放在所有分支后面凿蒜。每個(gè)case中至少要有一條語(yǔ)句涉兽。
當(dāng)程序執(zhí)行到switch語(yǔ)句時(shí),先計(jì)算條件表達(dá)式的值,假設(shè)值為A,然后拿A與第1個(gè)case語(yǔ)句中的值1進(jìn)行匹配,如果匹配則執(zhí)行語(yǔ)句組1,語(yǔ)句組執(zhí)行完成跳出switch,不像C語(yǔ)言那樣只有遇到break才跳出switch;如果A沒(méi)有與第1個(gè)case語(yǔ)句匹配, 與第2個(gè)case語(yǔ)句進(jìn)行配, 如果匹配則執(zhí)行語(yǔ)句組2,以此類推,直到執(zhí)行語(yǔ)句組n。如果所有的case語(yǔ)句都沒(méi)有執(zhí)行,就執(zhí)行default的語(yǔ)句組n+1,這時(shí)才跳switch篙程。
在Swift里,Switch能支持多種數(shù)據(jù)類型别厘,包括浮點(diǎn)虱饿、布爾、字符串等:
switch語(yǔ)句支持整形數(shù)據(jù)的基本形式示例代碼如下:
1 | ?var number = 90
2 | ?switch number / 10{
3 | ?case 9: print("優(yōu)秀")
4 | ?case 8: print("良好")
5 | ?case 7,6: print("中等")
6 | ?default :
7 | ?????print("差")
8 | ?}
上述代碼將100分制轉(zhuǎn)換為:“優(yōu)秀”触趴、“良好”氮发、“中等”、“差”評(píng)分制冗懦。第2行計(jì)算表達(dá)式獲得0~9分?jǐn)?shù)值爽冕。第5行代碼中的7,6是將兩個(gè)值放在一個(gè)case。
switch語(yǔ)句支持浮點(diǎn)型數(shù)據(jù)的基本形式示例代碼如下:
1 | ?let float = 1.5
2 | ?switch float {
3 | ?case 1.5:
4 | ?????print("1.5")
5 | ?default:
6 | ?????print( "default")
7 | ?}
switch語(yǔ)句支持布爾型數(shù)據(jù)的基本形式示例代碼如下:
1 | ?let isSuccess = true
2 | ?switch isSuccess {
3 | ?case true:
4 | ?????print("true") ??//被輸出
5 | ?default:
6 | ?????print("default")
7 | ?}
switch語(yǔ)句支持字符型數(shù)據(jù)的基本形式示例代碼如下:
1 | ?let name = "Swift"
2 | ?switch name {
3 | ?case "Swift":
4 | ?????print("Swift ") ?//被輸出
5 | ?default:
6 | ?????print( "default")
7 | ?}