Swift中类和结构体的选择

在代码中,我们可以使用类和结构体来定义自己的自定义数据类型。然而,结构体实例总是通过值传递,类实例总是通过引用传递。这意味两者适用不同的任务。当我们在考虑一个工程项目的数据结构和功能的时候,就需要决定每个数据结构是定义成类还是结构体。

按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:

  1. 该数据结构的主要目的是用来封装少量相关简单数据值。
  2. 有理由预计该数据结构的实例在被赋值或传递时,封装的数据将会被拷贝而不是被引用。
  3. 该数据结构中储存的值类型属性,也应该被拷贝,而不是被引用。
  4. 该数据结构不需要去继承另一个既有类型的属性或者行为。

举例来说,以下情境中适合使用结构体:

  1. 几何形状的大小,封装一个 width 属性和 height 属性,两者均为 Double 类型。
  2. 一定范围内的路径,封装一个 start 属性和 length 属性,两者均为 Int 类型。
  3. 三维坐标系内一点,封装 x , y 和 z 属性,三者均为 Double 类型。

在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容