每天了解一点不一样的 Swift 小知识
代码截图
小笔记
这段代码在说什么
Swift 里的 Switch
语句不同于 Objective-C 里的 Switch
语句,在 Swift 中,Switch 语句必须是完备的。
这就是说,每一个可能的值都必须至少有一个 case 分支与之对应。在某些不可能涵盖所有值的情况下,你可以使用默认(default)分支来涵盖其它所有没有对应的值,这个默认分支必须在 switch 语句的最后面。
当无法满足完备性时,编译器会提示错误。例如代码截图里的 onboarding
情况就没有被覆盖到,所以这时候编译器就会报错。
Swift 的这个特性让错误代码在开发期间就能被暴露出来,从而提升了运行时的稳定性。
简化无意义的 default 分支代码
虽然 Swift 这种强制你必须覆盖所有情况的写法提升了代码的健壮性,但是有时候还是会让人觉得有点闹心。
比如下面这段代码,因为 default 分支不会做任何事,但是又碍于编译器报错,你不能删掉 default 语句,只能在 default 后面写上一条无意义的代码,八成最后的代码会长成下面这个样子:
let name = "SketchK"
switch name {
case "SketchK": print("Hello, SketchK")
default: print("Do Nothing")
}
那么有更简洁的写法么?答案是当然有,我们只需要在 default:
后面加上一组小括号即可。
switch name {
case "SketchK": print("Hello, SketchK")
default: ()
}