一個關(guān)鍵字,能做你50行代碼也做不到的事情;
一個關(guān)鍵字,能讓你震撼它的強大;
一個關(guān)鍵字,能讓你即可喜歡上他.
不信?你拉到最后看一眼就行了!
不要不相信,這就帶你去了解一個關(guān)鍵字,讓你相信世界上真有奇跡!
***它僅僅是一個關(guān)鍵字:
--------->? switch ?<----------
我們知道的switch是下面這樣的:
- 你能回答我為什么 括號里 只能是返回整型的表達式嗎?
- 你能回答我為什么 case 后只能是整數(shù)嗎?
- 可不可以不要那么多條條框框?
- 可不可以不要那么功能單一?
- 可不可以不寫break,死命重復(fù)有意義嗎?
- 忘記寫break可不可以不穿透?
switch (返回整型的表達式) {
case 整數(shù):
需要執(zhí)行的代碼A;
break;
case 整數(shù):
需要執(zhí)行的代碼B;
break;
...
default:
需要執(zhí)行的其它代碼;
break;
}
***讓 Swift 來回答你 : 如你所愿! ***
來看看Swift里的switch的優(yōu)雅表演
你有的我一樣有
- 單值判斷
//單值判斷
let sex = 1
switch sex {
case 0:
print("男")
case 1:
print("女")
default:
print("其他")
}
我有的你一樣都沒有
- 多值(范圍)判斷
//多值判斷
switch sex {
case 0...1:
print("正常人")
default:
print("其他")
}
- 浮點型判斷:為什么只能判斷整形值,你out了
//浮點型判斷
let pi = 3.14
switch pi {
case 3.14:
print("π")
default:
print("不是圓周率")
}
- 字符判斷 :直接點就是好
//字符判斷
let m = 92.3
let n :Double = 0
var result :Double = 0
let option = "+"
switch option {
case "+":
result = m + n
case "-":
result = m - n
case "*":
result = m * n
case "/":
guard n > 0 else {
result = m
break
}
result = m / n
default:
result = 0
}
print(result)
- 范圍匹配
//范圍匹配
switch count {
case 0..<10:
print("1位數(shù)")
case 10..<100:
print("2位數(shù)")
case 100..<1000:
print("3位數(shù)")
case 1000..<10000:
print("4位數(shù)")
default:
print("5位數(shù)")
}
- 元祖匹配
//元組匹配
let point = (1,0)
switch point {
case (0,0):
print("在原點")
case (0..<10,_) :
print("在y軸右邊")
case (_,0..<10) :
print("在x軸上邊")
default:
print("在不知名的遠方")
}
- 值綁定 :還有誰能辦到
//值綁定
let point2 = (0,-10)
switch point2 {
case (let x, 10)://當y=10時輸出x的值
print(x)
case (0 , let y) where y < 0://當x = 0 且 y < 0 時輸出的值
print(y)
default:
print("其他")
}
- 多值匹配 :這才是最牛逼的
//多值匹配
let currentCharacter: Character = "e"
switch currentCharacter {
case "a", "e", "i", "o", "u":
print("\(currentCharacter) is a vowel")
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
"n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
print("\(currentCharacter) is a consonant")
default:
print("\(currentCharacter) is not a vowel or a consonant")
}
最后問一句:你震撼了嗎?你喜歡上Swift了嗎?
參考:http://www.cocoachina.com/ios/20140611/8769.html