Enumerations
Opened this issue · 0 comments
LeeSen11 commented
枚举为一组相关值定义一个通用类型,并使我们能够在代码内以类型安全的方式使用这些值。
如果我们熟悉C的话,就知道C中的枚举会为每个case名称设置一个整型值。 Swift中的枚举相对来说更加灵活,我们不必为枚举中的每个case都提供值。如果我们为每个枚举case提供一个值(称为原始值),那么这个值的类型可以是String,Character, 或者整型及浮点型
枚举语法
使用Switch对枚举值进行匹配
对枚举case进行遍历
相关值
原始值
隐式指定的原始值
使用原始值进行初始化
递归枚举
递归枚举是一种枚举,该枚举具有该枚举的另一个实例作为一个或多个枚举case的关联值。我们可以通过在枚举的case前面使用indirect来表明这个case是递归的,这会告诉编译器插入必要的间接层。
比如,下面是一个用于存储简单算术表达式的枚举:
enum ArithmeticExpression {
case number(Int)
indirect case addition(ArithmeticExpression, ArithmeticExpression)
indirect case multiplication(ArithmeticExpression, ArithmeticExpression)
}
我们也可以在枚举定义的前面添加indirect关键字来让枚举中的所有有关联值的case可以进行递归
indirect enum ArithmeticExpression {
case number(Int)
case addition(ArithmeticExpression, ArithmeticExpression)
case multiplication(ArithmeticExpression, ArithmeticExpression)
}