枚举:定义可能值列表的自定义类型模型。是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。
Swift的枚举类似于 Objective C 和 C 的结构,枚举的功能为:
1.它声明在类里,通过实例化类来访问它的值。
2.也可以定义构造函数来提供一个初始成员值,可以在原始的实现基础上扩展它们的功能。
3.可以遵守协议来提供标准的功能。
不过Swift中的枚举要灵活得多,不必为枚举的每个情况提供值。如果为每个枚举情况提供了值(称为原始值),则该值可以是字符串、字符或任何整数或浮点类型的值。
枚举语法
以上枚举中定义的值(如north、south、east和west)是其枚举情况。您使用case关键字引入一行新的枚举案例。
与C和Objective-C等语言不同,Swift枚举案例默认没有整数值设置。在上面的Compass示例中,north、south、east和west并不隐含地等于0、1、2和3。相反,不同的枚举情况本身就是值,具有明确定义的Compass类型。
var directionToHead = CompassPoint.west
directionToHead的类型可以在它被CompassPoint的一个可能值初始化时推断出来。一旦directionToHead被声明为一个CompassPoint,你可以使用一个缩写语法(.)将其设置为另一个CompassPoint的值:
directionToHead = .east
当directionToHead的类型已知时,再次为其赋值可以省略枚举名。使用显式类型的枚举值可以让代码具有更好的可读性。
单行上也可以出现多个情况,用逗号分隔:
获取所有枚举的案例:
通过在枚举名称后写入: CaseIterable来启用此功能,Swift将所有案例的集合公开为枚举类型的allCases属性里。
枚举分为相关值和原始值
相关值:枚举成员可以是不同数据类型的;值的创建基于常量或者变量;相关值是当你在创建一个基于枚举成员的新常量或变量时才会被设置,并且每次当你这么做得时候,它的值可以是不同的。
原始值:枚举成员是相同数据类型的;预先填充的值;原始值始终是相同的。
原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。
在原始值为整数的枚举时,不需要显式的为每一个成员赋值,Swift会自动为你赋值。