知识卡片
switch 默认不贯穿的设计取舍
内容
C 语言的 switch 默认会从匹配到的 case 一路贯穿执行到后面所有 case,必须每个分支手写 break 来阻止,一旦漏写就会静默执行到不该执行的分支——这是 C 系语言里公认容易踩坑的地方。Swift 反过来把”只执行匹配到的那一个分支”设为默认行为,真的需要贯穿到下一个 case 时必须显式写 fallthrough 关键字表明意图。同时 Swift 强制 switch 必须穷尽所有可能取值(写不全就得加 default),把”漏判某种情况”这类错误从运行时的隐患变成编译期就会报错的硬约束。这是”安全默认值 + 显式声明例外”这一设计哲学在控制流语句上的体现。
参考来源
《Swift全解析:新式iOS实战开发》第6章《Swift控制流》