在oc中,case关键字出现在switch流程控制语法中,swift也不例外.但是相较与oc中switch只能筛选整型变量,swift中switch却不仅限于此.还有一些其他的语法改变这里不做过多的介绍,这里要介绍的是case 和 where结合使用精准匹配.在某些场景使用,还是可以简化不少代码的.
我也是初学swift的菜鸟一枚,目前还奋斗在码oc代码的路上,仅此做做笔记,以后万一要写swift项目时忘了,可以回头来看看.
直接贴代码,自己意会
switch流程控制中case where的使用
let point = (8, 8)
switch point {
case (let x, let y) where x == y:
//这里对x,y解析,并添加一个where条件x=y时才执行下方代码
print("这个点在y=x上")
case (0, 0):
print("这个点在原点上")
default:
print("这个点不符合以上2中情况")
}
if case的结合使用
switch需要列出太多情况,就算用default至少也要列出2种.有时我们可能只需要抓取对其中一种情况,就可以考虑使用if case
let age = 18
if case 0..<18 = age {
print("未成年")
}
let age = 8
if case 0..<18 = age where age % 3 == 0 {
print("未成年,而且年纪是3的倍数!")
}
这是swift2.x时候的语法了,3.0之后需要将where改成逗号
let age = 8
if case 0..<18 = age , age % 3 == 0 {
print("未成年,而且年纪是3的倍数!")
}
for case 结合使用
如果需要找出1-100内能够整除3的数,我之前一般是这么做
for i in 1...100 {
if i % 3 == 0 {
print(i)
}
}
使用for case 语句可以简化不少
for case let i in 1...100 where i % 3 == 0 {
print(i)
}
没有了多对{}的匹配,代码更加简洁易读
特定情况下,对case where的理解足够深刻的情况下,合理的应用,可以很好的缩短代码,最主要的是能够提高代码可读性.这也是swift所提倡的代码简洁性.