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与我联系