Swift Enum存储属性

时间:2016-07-22 13:07:32

标签: swift enums

我是Swift的新手,刚刚遇到swift的枚举功能,它可以有计算属性但不存储属性 为什么枚举在swift中没有存储属性?

1 个答案:

答案 0 :(得分:2)

枚举是结构化数据类型。它们可以存储value type属性(例如static属性),但它们不能具有对象所具有的实例属性。计算属性也允许为枚举的每个case返回不同的值,这通常会有所不同。

来自apple docs

  

值类型是一种类型,其值在分配给a时被复制   变量或常量,或传递给函数时。

     

所有结构和枚举都是Swift中的值类型。这意味着   您创建的任何结构和枚举实例 - 以及任何值   它们作为属性的类型 - 在传递时始终被复制   在你的代码中。

因为枚举在每次分配时都被复制,所以它们不能包含reference type等实例变量。不同之处在于引用类型引用相同的实例而不是被复制。枚举按定义,因此它们的值将始终相同。

编辑:

结构和枚举之间的一个重要区别是结构可以存储属性。枚举中的每个案例都可以具有不同的关联值,但枚举类型的每个值表示由枚举定义的单个案例。因此,根据定义,枚举案例永远不应更改值。

结构:值类型,可以有存储属性

枚举:值类型,不能存储属性

类:引用类型,具有存储属性