知识卡片

结构体与类的选择准则

专业/工作 · 752.b

内容

书中给出四条选型经验法则,按优先级排列:需要传值语义(赋值/传参时希望自动复制)就用结构体;不需要子类继承就用结构体(结构体本就不支持继承);类型表达的行为直观、只包含简单值就优先用结构体,需要时随时能改成类;除此以外的情况都用类。若既想要引用语义又不想支持子类化,答案是final class——用final堵死继承,同时保留类的引用语义。默认建议是”一开始就用结构体”,因为值类型不用担心实例被外部意外修改、心智负担更低;只有当明确清楚需要引用类型带来的能力(共享可变状态、身份标识、继承)时才切换到类。这条准则把[[值语义与引用语义的本质区别]]从”是什么”落地成了”该怎么选”的具体操作指南。

参考来源

《Swift编程权威指南》第18章《值类型与引用类型》