元組作為多個值的表示方式也可以在switch中進(jìn)行比較庶诡。Switch中使用元組非常靈活蝌诡,字段可以是普通值瓜晤,也可以是范圍黍聂。
示例代碼如下:
1 | ?let point = (0,1)
2 | ?switch point{
3 | ?case (0,0): print("點(diǎn)在原點(diǎn)")
4 | ?case(_,0): print("點(diǎn)在x軸")
5 | ?case(0,_):print("點(diǎn)在y軸")
6 | ?default: print("點(diǎn)在其他位置")
7 | ?}
輸出結(jié)果如下:點(diǎn)在y軸
在switch中使用元組還可以使用值綁定和where語句譬圣。
1.值綁定
使用元組的時候還可以在case分支中分配的值綁定到一個臨時的常量或變量,這些常量或變量能夠在該分支里使用,這就稱為值綁定瓮恭。
示例代碼如下:
1 | ?let point = (1,1)
2 | ?switch point{
3 | ?case (let x, 0):
4 | ?????print("這個點(diǎn)在x軸,x值是\(x)")
5 | ?case (0,let y):
6 | ?????print("這個點(diǎn)的y軸厘熟,y值是\(y)")
7 | ?case let (x,y):
8 | ?????print("這個點(diǎn)的x值是\(x)","這個點(diǎn)的y值是\(y)")
9 | ?}
輸出結(jié)果:這個點(diǎn)的x值是1這個點(diǎn)的y值是1
本示例還是關(guān)于點(diǎn)的坐標(biāo)問題,其中第3行代碼中的letx就是值綁定,我們在case中聲明了一個x的常量,然后x常量就可以在該分支中使用了屯蹦。在第7行case let(x,y)绳姨,使用了值綁定的x登澜。這里所有情況都包含完,可以不用default飘庄,只要所有的情況都包含就可以脑蠕。
2. where
在綁定定值的情況下,還可以在case中使用where語句,來增加判斷的條件,類似于SQL語句中的的where子句跪削。
示例代碼如下:
1 | ?let point = (1,1)
2 | ?switch point{
3 | ?case let(x,y) where x == y:
4 | ?????print("x==y")
5 | ?case let(x,y) where x == -y:
6 | ?????print("x==-y")
7 | ?default:
8 | ?????print("x和y沒有直接關(guān)系")
9 | ?}
輸出結(jié)果如下:x==y
上述例子是在值綁定的基礎(chǔ)上谴仙,使用where語句進(jìn)行條件判斷。代碼第3行中的let(x碾盐,y)就是值綁定,然后我們在case后面使用了wherex == y,過濾元組x不等于y的字段狞甚。