知识卡片

溢出运算符的安全默认

专业/工作 · 631

内容

普通算术运算符在数值超出其类型能表示的范围(如 UInt8 加到 256)时会直接触发运行时错误 并中断程序,而不是像很多语言那样悄悄回绕成一个错误的数值——溢出在 Swift 里默认被当作 一个必须暴露的错误,而非静默发生的行为。如果开发者确实需要允许溢出,必须换用专门的 溢出运算符(&+、&-、&*)显式声明这种意图。发散:这与[[逃逸闭包与非逃逸闭包的权衡|逃逸闭包默认非逃逸]] 是同一种设计倾向的不同体现——把可能导致隐蔽 bug 的行为设为默认不可用,逼开发者用一个 显眼的语法标记去主动选择风险,而不是让风险偷偷潜伏在正常语法里。

参考来源

《Swift 4从零到精通iOS开发》第6章《高级运算符与枚举》