枚举与结构…

像保存属性和方法的类一样,枚举和结构也可以具有与之关联的方法。 这些类型在现代编程中非常方便。

枚举:

关键字枚举用于定义枚举数据类型。 枚举或枚举是一种数据类型,它允许您定义可能(相关)值的列表。 枚举名称应以大写字母开头(例如:枚举DaysofaWeek)。

枚举可以具有原始值或关联值。 我们将在以下两个步骤中进行介绍。 像类一样,枚举功能也可以通过确保标准协议功能来扩展。

具有原始值的枚举:

原始值可以是字符串,字符或任何整数或浮点数类型。 每个原始值在其枚举声明中必须唯一。 将整数用于原始值时,如果未为某些枚举成员指定任何值,则它们会自动递增。 如果为任何成员分配了任何原始值,则为其余成员分配的原始值将从该给定值开始增加。

使用init?(rawValue:)初始化程序从原始值创建一个枚举实例。 它返回与原始值匹配的枚举大小写或为nil。

具有关联值的枚举:

在以下示例中,尝试在不带切换大小写的情况下访问关联的值。 您会收到编译器错误! 我们可以在开关盒中访问它们。

差异:(来源:https://www.tutorialspoint.com/swift/swift_enumerations.htm)

结构(struct):

在快速编程中,结构是灵活的构建基块。

关键字“ struct”用于创建结构。 结构支持许多与类相同的行为,例如方法,初始化程序。 结构和类之间最重要的区别之一是,结构在代码中传递时始终会被复制,但是类是通过引用传递的。 这就是为什么我们只说结构是值类型,而类是引用类型。

当您创建一个结构实例,并将该实例传递给其他变量时,该结构被复制,最后将有两个结构对象。 如果与类相同,则该类实例的地址将被复制到第二个变量中。 如果您更改一个属性的任何值,则更改将反映在两个对象(属性)上。 如果使用结构,则更改仅发生一个实例。

与类的第二个不同之处是,结构会为其成员或属性提供默认的初始化程序。 甚至我们都可以在struct中编写我们的便捷初始化程序,以便更轻松地使用它们。 通过结构名称访问结构的成员。

注意(提示):如果我们在struct的扩展中编写我们的便捷初始化程序,则可以通过我们的便捷初始化程序或带有struct成员的默认初始化程序来初始化struct对象。