知识卡片
guard语句提前退出与作用域穿透
内容
guard let x = optional else { ...; return }在条件不满足时必须在else分支里提前退出当前作用域(return、break或抛错误,缺少退出语句编译不通过),条件满足时绑定出的常量在guard语句之后的整个作用域都可见——这与[[强制展开与可空实例绑定的安全性分野]]里的if let相反:if let绑定的常量只在if分支内部可见,离开分支就失效。guard的设计意图是把”不满足前提就没必要继续往下走”的防御性检查放在函数开头集中处理,让函数主体不必嵌套在层层if里,代码呈现的是”先排除异常情况,再处理正常逻辑”的线性结构,而不是”层层验证之后才做正事”的缩进金字塔。
参考来源
《Swift编程权威指南》第12章《函数》