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

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

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

enum 枚举名

{

枚举的定义

}

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

成员值

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

enum WeekDays {case Mondaycase Tuesdaycase Wednesdaycase Thursdaycase Friday
}

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

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

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

var day = WeekDays.Friday
day = WeekDays.Wednesday
day = .Monday

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

原始值

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

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

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

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

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

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

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

相关值

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

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

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

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
                             
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

《从零开始学Swift》学习笔记(Day 24)——枚举(Day 24)——枚举相关推荐

  1. 从零开始学STM32(学习笔记——第三天)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 参考文章: [教学文章]STM32内部重要功能全记录 [教学文章]STM32内部核心功能大揭秘 [教学文章]STM32内部重要功能全记录 框架:STM32 ...

  2. 影像组学视频学习笔记(24)-文献导读:了解88种降维、分类器组合、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(24)主要讲解: 解读一篇文献,了解不同的降维.分类器组合方法 这篇文献2018年发表在European Radiology上: Rad ...

  3. 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一

    本笔记由学习MLIR Tutorials总结而成,欢迎批评指正. Chapter1: Toy语言和AST MLIR提供了一种Toy语言来说明MLIR的定义和执行的流程.Toy语言是一种基于张量的语言, ...

  4. 关东升的《从零开始学Swift》即将出版

    大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift><从零开始学Swift>将在< ...

  5. 关东升的《从零开始学Swift》3月9日已经上架

    大家一直期盼的<从零开始学Swift>于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发.全 ...

  6. 关东升的《从零开始学Swift》

    这个博文是swift 2.0的,也是可以参考的 http://blog.csdn.net/tonny_guan/article/category/6139217 文章目录 [置顶] 关东升的<从 ...

  7. 影像组学视频学习笔记(15)-ROC曲线及其绘制、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(15)主要介绍: ROC曲线及其绘制 ROC 曲线 ROC = receiver operating characteristic cu ...

  8. 影像组学视频学习笔记(14)-特征权重做图及美化、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(14)主要介绍: 特征权重做图及美化 import matplotlib.pyplot as plt %matplotlib inlin ...

  9. 影像组学视频学习笔记(12)-支持向量机(SVM)参数优化(代码)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(12)主要介绍: SVM参数优化(代码) 参数优化: 自动寻找最合适的γ和C组合. 原理:遍历所有给定的参数组合,对数据进行训练,找到最 ...

  10. 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(11)主要介绍: SVM支持向量机(理论) 支持向量机 (support vector machine, SVM) 号称是鲁棒性(rob ...

最新文章

  1. 怎么关闭wordpress评论
  2. wxpython有没有可视化设计_wxPython - GUI Builder工具( GUI Builder Tools)
  3. 你准备好持续交付(CD)了吗?
  4. Mysql与Sql server,Sum函数跟Count函数
  5. 做好计划事半功倍论文_Picocli 2.0:事半功倍
  6. call stack and stack buffer overflow
  7. docker搭建单节点mongodb
  8. rtsp连接断开_live555_RTSP连接建立以及请求消息处理过程
  9. 在Linux上安装Zookeeper
  10. pandas多行合并一行_Pandas函数妙用
  11. Redis数据库,Jedis接口分类(使用)说明
  12. Unity基础——刚体
  13. 按键精灵手机助手学习过程中的教程集锦收藏
  14. 程序人生 - 参与杭州车牌摇号人数已破百万!附杭州车牌摇号及竞价操作指南!
  15. 我们需要“梦想比回忆多”的精神
  16. Shiny应用基础(5):数据获取与响应
  17. node-opcua的使用 --- [1] 简单server
  18. 基于MATLAB手写体数字识别程序设计
  19. python什么是函数的唯一标识_Python:从modu中唯一标识一个函数
  20. JAVA 第二周学习笔记

热门文章

  1. Vue入门---- vue-router
  2. 在java中对null的理解
  3. GoCD notes
  4. 让vs编写的程序在未安装vs的电脑上使用的一种方法
  5. python实现守护进程_守护进程原理及Python实现
  6. 检测网络是否稳定的计算机命令,如何查看自己的网络是否稳定
  7. mysql允许所有用户连接_Mysql权限控制 - 允许用户远程连接
  8. java中Arrays类和Math类常用API简介
  9. jQuery中事件及常用事件总结、jQuery中常见效果、隐式迭代、链式编程、样式操作、动画队列、不同元素绑定同一个事件
  10. C语言的应用领域及其重要性