博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《从零开始学Swift》学习笔记(Day 24)——枚举(Day 24)——枚举
阅读量:6233 次
发布时间:2019-06-21

本文共 1474 字,大约阅读时间需要 4 分钟。

原创文章,欢迎转载。转载请注明:关东升的博客 

 

Swift中的枚举可以定义一组常量、提高程序的可读性;还具有面向对象特性。

使用enum关键词声明枚举类型,具体定义放在一对大括号内,枚举的语法格式如下:

enum 枚举名

{

     枚举的定义

}

“枚举名”是该枚举类型的名称。它首先应该是有效的标识符,其次应该遵守面向对象的命名规范,它由一组成员值和一组相关值组成。

成员值

枚举的成员值默认情况下不是整数类型,以下代码是声明枚举示例:

enum WeekDays {    case Monday    case Tuesday    case Wednesday    case Thursday    case Friday}

在这些成员值前面要加上case关键字,也可以将多个成员值放在同一行,用逗号隔开,如下所示:

enum WeekDays {    case Monday, Tuesday, Wednesday, Thursday,Friday}

下面我们看一个示例,代码如下:

var day = WeekDays.Fridayday = WeekDays.Wednesdayday = .Monday

使用枚举成员赋值时候,我们可以采用完整的“枚举类型名.成员值”的形式,也可以省略枚举类型采用“.成员值”的形式。这种省略形式能够访问的前提是,Swift编译器能够根据上下文环境推断类型。因为我们已经在第1行和第2行给day变量赋值,所以即使第3行代码采用缩写,Swift编译器能够推断出数据类型是WeekDays

原始值

出于业务上的需要,要为每个成员提供某种基本数据类型,我们可以为枚举类型提供原始值(raw values)声明,这些原始值类型可以是:字符、字符串、整数和浮点数等。

原始值枚举的语法格式如下:

enum 枚举名: 数据类型{       case 成员名 = 默认值   ...}

在“枚举名”后面跟“:”和“数据类型”就可以声明原始值枚举的类型,然后在定义case成员的时候需要提供原始值。

以下代码是声明枚举示例:

enum WeekDays: Int {    case Monday          =0    case Tuesday        =1    case Wednesday     = 2    case Thursday       =3    case Friday         =4}

我们声明的WeekDays枚举类型的原始值类型是Int,需要给每个成员赋值,只要是Int类型都可以,但是每个分支不能重复。

相关值

Swift中除了可以定义一组成员值,还可以定义一组相关值(associated values),它有点类似于C中的联合类型。下面看一个枚举类型的声明:

enum Figure {    case Rectangle(Int, Int)    case Circle(Int)}

枚举类型Figure(图形)有两个相关值: Rectangle(矩形)和Circle(圆形)。RectangleCircle是与Figure有关联的相关值,它们都是元组类型,对于一个特定的Figure实例,只能是其中一个相关值。从这一点来看,枚举类型的相关值类似于C中的联合类型。

 

欢迎关注关东升新浪微博@tony_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
                             
更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:
智捷课堂论坛网站:

 

你可能感兴趣的文章
【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么...
查看>>
Ad Hoc Distributed Queries的启用与关闭
查看>>
java工具类POI导出word
查看>>
openwrt使用list
查看>>
shell语言
查看>>
C++动态分配内存
查看>>
Android Studio工程Gradle编译报错
查看>>
桌面小部件开发
查看>>
Unity3d dll 热更新 基础框架
查看>>
spring boot整合mybatis+mybatis-plus
查看>>
深度学习利器:TensorFlow在智能终端中的应用——智能边缘计算,云端生成模型给移动端下载,然后用该模型进行预测...
查看>>
如何查看表和索引的统计信息
查看>>
word文档的动态添加数据
查看>>
模仿ReentrantLock类自定义锁
查看>>
Redis进阶实践之九 独立封装的RedisClient客户端工具类
查看>>
如何在Python中从零开始实现随机森林
查看>>
动态规划-最优二叉搜索树-公式推导
查看>>
jquery获取前一个月日期
查看>>
R12.2常用手册
查看>>
【全网最全的博客美化系列教程】01.添加Github项目链接
查看>>