如果读者学习或者编写过其他语言中的枚举类型,就会发现Swift的枚举类型没有底层的整型,不过利用Swift枚举自有的原始值特性就能得到同样的效果。想让Subject枚举类型能够使用Int类型的原始值,需要把枚举的声明更改如下:
动手写7.1.4 EnumRawValue
控制台输出如下:
指定Subject的枚举值是Int类型,编译器会默认自动按顺序给每个可能值增加原始值,从0开始,逐个递增,从打印结果也可以看出。如果不需要编译器的默认值而是在应用中有特殊的需求,可以指定每个可能值的原始值,代码示例如下:
动手写7.1.5 SetEnumRawValue
控制台输出如下:
最终的输出结果的确就是之前已经设定好的原始值。有时候一个枚举值需要保存至硬盘中,比如一个用户的偏好设置,或者是一个对象的信息。在存入磁盘时,枚举只能变成计算机中基本的类型,比如以整数或者浮点数的方式存储,那么在从硬盘中读取这类信息之后就需要将其再转换回枚举类型。Swift为开发者提供了从值转换回枚举的方法。代码示例如下:
动手写7.1.6 ValueConvertToEnum
最终的输出结果的确就是之前已经设定好的原始值。有时候一个枚举值需要保存至硬盘中,比如一个用户的偏好设置,或者是一个对象的信息。在存入磁盘时,枚举只能变成计算机中基本的类型,比如以整数或者浮点数的方式存储,那么在从硬盘中读取这类信息之后就需要将其再转换回枚举类型。Swift为开发者提供了从值转换回枚举的方法。代码示例如下:
动手写7.1.6 ValueConvertToEnum
控制台输出如下:
控制台输出如下:(www.xing528.com)
代码中使用Subject(rawValue:)的方法尝试去转换subject1和subject2,由于20并不在学科枚举的原始值中,转换失败,actualSubject2并没有被赋值。除了使用Int类型,还可以使用String作为枚举的原始值,代码示例如下:
动手写7.1.7 EnumRawValueWithString
代码中使用Subject(rawValue:)的方法尝试去转换subject1和subject2,由于20并不在学科枚举的原始值中,转换失败,actualSubject2并没有被赋值。除了使用Int类型,还可以使用String作为枚举的原始值,代码示例如下:
动手写7.1.7 EnumRawValueWithString
控制台输出如下:
控制台输出如下:
在使用String类型作为枚举的原始值类型时,默认会使用可能值本身的名字,将Subject的声明改成如下:
在使用String类型作为枚举的原始值类型时,默认会使用可能值本身的名字,将Subject的声明改成如下:
之前代码的输出结果不变。
之前代码的输出结果不变。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。