枚举语法
- 用 enum 关键字来定义一个枚举,然后将其所有的定义内容放在一个大括号 ({ }) 中
- 多个成员值可以出现在同一行中,要用逗号隔开

- 每一个枚举都定义了一个全新的类型。正如 Swift 中其他的类型那样,它们的名称需要首字母大写。给枚举类型起一个单数而不是复数的名字,从而使得他们能够顾名思义。

- 你可以用 switch 语句来匹配每一个单独的枚举值

遍历枚举的 case
- 对于某些枚举来说,如果能有一个集合包含了枚举的所有情况就好了。你可以通过在枚举名字后面写:Caselterable 来允许枚举被遍历。 Swift 会暴露一个包含对应枚举类型的所有情况的集合名为 allCases。

关联值
- 可以定义 Swift 枚举来存储任意给定类型的关联值,如果需要的话不同枚举成员关联值的类型可以不同。


原始值
- 枚举成员可以用相同类型的默认值预先填充(称为原始值)。

预设原始值
- 当你在操作存储整数或字符串原始值枚举的时候,你不必显式地给每一个成员都分配一个原始值。当你没有分配时, Swift 将会自动为你分配值。

从原始值初始化
- 如果你用原始值类型来定义一个枚举,那么枚举就会自动收到一个可以接受原始值类型的值的初始化器(叫做 rawValue 的形式参数)然后返回一个枚举成员或者 nil。你可以使用这个初始化器来尝试创建一个枚举的新实例。

递归枚举
- 递归枚举是拥有另一个枚举作为枚举成员关联值的枚举。当编译器操作递归枚举时必须插入间接寻址层。你可以在声明枚举成员之前使用 indirect 关键字来明确它是递归的。
- 如说表达式(5 + 4) * 2 在乘法右侧有一个数但有其他表达式在乘法的左侧。


网友评论