2016-07-22 64 views

回答

2

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

从苹果文档

值类型是一个类型,其值时,它被分配给一个 变量或常数,或当它被传递到功能被复制。

所有结构和枚举是斯威夫特值类型。这意味着 任何结构和枚举情况下,您创建和任意值 类型它们作为属性,是当他们在你的代码中传递 周围总是被复制。

因为每次分配它们都会复制枚举,所以它们不能包含实例变量,如reference type会。区别在于引用类型引用相同的实例而不是被复制。枚举是的情况下定义因此它们的值将始终是相同的。

编辑:

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

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

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

类:参考类型,已经存储了属性

+0

感谢对于这样的快速回复,但我仍然有疑问,因为背后有什么技术原因。为什么他们不能拥有实例存储的属性? –

+1

编辑更多信息的答案 – Max

+0

由于结构也像枚举值类型,但它们已存储属性。因此,根据你的答案,结构也不应该存储实例属性。如果我缺少一些东西,请纠正我。 –