Swift中的Class vs Struct
类和结构是通用的灵活结构,它们成为程序代码的构建块。 您可以使用与常量,变量和函数完全相同的语法来定义属性和方法,以向类和结构添加功能。
-Apple Documentaion
让我们通过类比来讨论两者。
名词:
公司常务董事决定增加库存以应对通胀。 他命令部门人员以我提供的模板协作创建当前库存报告。
工作人员创建模板的副本并在其中共享,以便任何人都可以对其进行更新。
审核后,最终报告文档将与主管共享[具有只读访问权限]。
让我们讨论以上对话:
已共享模板以创建报告。 这意味着工作人员只能对模板具有只读访问权限。 如果Director提供了写访问权限,则任何人都可以有意或无意地更新模板,这是不期望的。
现在,要创建报告,工作人员需要制作一个模板副本并在部门之间共享,以便所有部门都可以做出贡献,并且默认情况下将保留修订历史记录。
结构 ==只读访问模板
类 ==部门人员对复制模板的读写访问权限[新文档]
相似之处:
- 定义属性以存储值
- 定义提供功能的方法
- 定义下标以使用下标语法提供对它们的值的访问
- 定义初始值设定项以设置其初始状态
- 扩展以扩展其功能,超出默认实现
- 符合协议以提供某种标准功能
相对于struct的类的附加功能:
- 继承使一个类可以继承另一个类的特征。
- 类型转换使您可以在运行时检查和解释类实例的类型。
- 使用反初始化程序,类的实例可以释放其分配的所有资源。
- 引用计数允许对一个类实例进行多个引用。
在代码中传递结构时,总是将其复制,并且不使用引用计数。
类和结构这两个主题都很广泛。 我将帖子分为两部分,以详细介绍这两个方面:
- 第1部分-Swift中的结构
- 第2部分-Swift中的课程
参考文献:
为什么选择结构而不是课堂
类和结构
https://medium.com/swift-in-sil/var-vs-let-in-sil-6476ccccfa02
谢谢阅读。
您可以随时通过Linkedin或Twitter与我联系