枚举类的特性
- 可以给每个case提供一个值(raw value),可以是字符串、字符、数字或者浮点数,不同case之间需要保持类型相同
- 每个case可以存储任何类型的关联值(associated value)
- 支持计算属性
- 支持实例方法
- 可以自定义initializers
- 可以满足接口
具体语法
- 创建枚举类
- 遍历枚举类cases
- Associated Values:可以是任意类型,且不同case可以存储不同类型的关联值
- 用switch匹配case中的关联值:如果所有关联值都被赋值给常量或者变量,可以把let或者var写到case后
- Raw Values:可以是字符串、字符、数字或者浮点数,不同case之间需要保持类型相同,且要保持不同cases的raw values不同。
- 隐式赋值Raw Values:如果是整数类型,那么每个case的原始值就比前一个case增加1,第一个case的raw value默认是0。如果是字符串类型,默认raw value就是case的名称。
- 通过原始值初始化:通过rawValue初始化枚举类,返回一个enum实例或者nil。
- 递归枚举类:使用其他枚举类实例作为关联值的枚举类
- 递归函数处理递归枚举类