概览
初学者在接触Swift语言中的switch…case操作符时,可能会觉得比较条件“不够灵活”。
比如,对于一些“常规”的比较操作,case可以很好的适配:
enum Size {
case small, middle, big
}
let size = Size.middle
switch size {
case .small:
print("s")
case .middle:
print("m")
case .big:
print("b")
}
这很好很强大,可是如果我们稍微改一下需求呢?
let i = 100
switch(i){
case i 0:
print("big")
default:
print("unknown")
}
这时,Swift毫不留情的报错了!难道这么简单的比较判断都做不了?
非也非也!
where,where,where
其实,可以再为case操作符添加where子句,进一步约束条件。
在这里,我们需要做的就是“忽略”case,直接将比较判断放在where子句中:
let i = 100
switch(i){
case _ where i 0:
print("big")
default:
print("unknown")
}
看一下运行结果:
或者我们还可以将i与Range来比较,效果类似:
switch i {
case (1...):
print("big")
case 0:
print("zero")
default:
print("small")
}
很简单,简直小“case”,不是吗?
那么,小伙伴你们学会了吗?😉
