一个关键字,能做你50行代码也做不到的事情;
一个关键字,能让你震撼它的强大;
一个关键字,能让你即可喜欢上他.
不信?你拉到最后看一眼就行了!
不要不相信,这就带你去了解一个关键字,让你相信世界上真有奇迹!
***它仅仅是一个关键字:
--------->❀ switch ❀<----------
我们知道的switch是下面这样的:
- 你能回答我为什么 括号里 只能是返回整型的表达式吗?
- 你能回答我为什么 case 后只能是整数吗?
- 可不可以不要那么多条条框框?
- 可不可以不要那么功能单一?
- 可不可以不写break,死命重复有意义吗?
- 忘记写break可不可以不穿透?
switch (返回整型的表达式) {
case 整数:
需要执行的代码A;
break;
case 整数:
需要执行的代码B;
break;
...
default:
需要执行的其它代码;
break;
}
***让 Swift 来回答你 : 如你所愿! ***
来看看Swift里的switch的优雅表演
你有的我一样有
- 单值判断
//单值判断
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位数")
case 10..<100:
print("2位数")
case 100..<1000:
print("3位数")
case 1000..<10000:
print("4位数")
default:
print("5位数")
}
- 元祖匹配
//元组匹配
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
网友评论