知识卡片
扩展是只能新增不能修改的开放机制
内容
extension 可以给任何已有类型(哪怕是没有源码的标准库类型,如给 Int 加下标、给 Double 加单位换算属性)追加计算属性、方法、下标、便利构造函数、嵌套类型,甚至让它事后去遵循某个协议;但它明确不能做三件事:不能加存储属性(没地方存,原类型的内存布局已经定死)、不能重写已有的属性或方法、不能加指定构造函数或析构函数。这三条限制合起来划出了一条边界:扩展只能”添加从未有过的新能力”,不能触碰或改变类型原有的行为和内存结构。这是”对扩展开放、对修改关闭”这一设计原则在语言层面的具体落地——想加新功能不需要、也不允许动到原类型的定义本身。
参考来源
《Swift全解析:新式iOS实战开发》第19章《Swift扩展》