第19章 枚举

你可以使用枚举(enumeration)定义一个受限的值得集合。枚举可以让你的代码变得清晰,因为它可以让你用描述性的名字代替那些像整数值那样抽象的事物。

如果你想使用枚举描述机器状态,可以使用如下代码:

enum State {

case Inactive

case Active

case Hibernate

case Terminated

}

var machineState =State.Inactive

在上述代码中,你定义了一个名为State的枚举类型,这个枚举类型有四个值:Inactive, Active, Hibernate, and Terminated。你可以使用case关键字指定枚举的值,或者你在一行使用逗号隔开多个枚举值

你可以像使用其它类型一样使用枚举类型,如上例中所示,你将State.Inactive这个枚举值赋给变量machineState

你要可以在三元条件运算符中、if语句中,switch语句中或者其他任何变量或者常量可以使用的地方使用枚举类型的值

machineState == State.Inactive? println("Machine Inactive") :

println("Machine State Unknown")

上上例中,Machine Inactive会被打印出来因为machineState的值是State.Inactive

枚举类型可以定义它自己的值类型,或者说你可以将其他类型(包括整型、字符串,浮点型等)赋给枚举类型,

为了将其他类型的值赋给枚举类型,你必须指定枚举的类型然后使用复制运算符赋值。例如,如果你想定义一个字母表的枚举并且跟踪字母的位置,你可以使用如下代码:

enum Alphabet:Int{

case A = 1

case B, C, D, E, F, G, H, I

case J, K, L, M, N, O, P, Q

case R, S, T, U, V, W, X, Y, Z

}

在上例中,你定义枚举类型Alphabet为整型。这意味着每个Alphabet的值都和一个整数相关联。你必须为每一个枚举类型的值关联一个整数值,在枚举值A你就是这么做的。因为这是整形类型,Swift会根据你列出的顺序计算出剩余的枚举类型值对应的整数值,

你可以像使用State一样使用Alphabet。对于Alphabet,你可以通过teRaw()函数得到枚举值对应的整数值

例如,如果你想将A的整数值和B的整数值相加,可以使用如下代码:

let result =Alphabet.A.toRaw() + Alphabet.B.toRaw()

toRaw()是一个函数,我们会在第27章进行讲解

时间: 2024-10-12 15:13:47

第19章 枚举的相关文章

[Effective Java]第六章 枚举和注解

第六章      枚举和注解 30.      用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型,例如一年中的季节或一副牌中的花色.在没引入枚举时,一般是声明一组int常量,每个类型成员一个常量: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public sta

4.13日第12次作业,16章外包,17章需求,19章组织级与大型项目

29-高项-田哲琦 16章.外包管理 1.外包的形式有哪五种?什么是利益关系?P346-348 答:企业现行采用的主要外包形式如下: 1).活动外包 2).服务外包 3).内包 4).合包 5).利益关系. 利益关系(benfit-based relationship),这是一种长期合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险,同时共享利益. 2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求?P348 答:软件外包管理总的目标是用强有力的手

第19章 queue队列容器

/* 第19章 queue队列容器 19.1 queue技术原理 19.2 queue应用基础 19.3 本章小结 */ // 第19章 queue队列容器 // 19.1 queue技术原理 // 19.2 queue应用基础 ------------------------------------------------------------------------------------------- //273 #include <queue> #include <iostre

Lua_第19章 String 库(上)

Lua_第19章String 库 Lua解释器对字符串的支持很有限.一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容.在 Lua中操纵字符串的功能基本来自于 string 库. String 库中的一些函数是非常简单的:string.len(s)返回字符串 s 的长度;string.rep(s, n)返回重复 n 次字符串 s 的串;你使用 string.rep("a", 2^20)可以创建一个 1M bytes 的字符 串(比如,为了测试需要);

Lua_第19章 String 库(下)

Lua_第19章 String 库(下) 19.3捕获(Captures) Capture(下面译为捕获或者capture,模式中捕获的概念指,使用临时变量来保存匹配的子模式,常用于 向前引用.)是这样一种机制:可以使用模式串的一部分匹配目标串的一部分.将你想捕 获的模式用圆括号括起来,就指定了一个capture.在 string.find 使用captures 的时候,函数会返回捕获的值作为额外的结果.这常被用 来将一个目标串拆分成多个: pair = "name =Anna" _,

《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

第三部分 基本类型:第15章 枚举类型和位标志

15.1 枚举类型枚举类型定义了一组“符号名称/值”配对.例如,以下Color类型定义了一组符合,每个符号表示一种颜色. internal enum Color{ White, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 枚举类型的好处:枚举类型容易编写.阅读和维护.枚举类型是强类型. 派生关系:System.Object -> System.ValueType -> System.Enum -> 枚举类型 枚举类型是

4.6日第10次作业,,18章风险,19章收尾,20章知识产权,高项,29-田哲琦

4.6日第10次作业,,18章风险,19章收尾,20章知识产权,高项,29-田哲琦 第18章.风险管理 1.风险管理包括哪六个过程?(记)P456 答:1).风险管理规划: 2).风险识别: 3).定性风险分析: 4).定量风险分析: 5).应对计划编制: 6).风险监控: 2.什么是应急计划?请举例.P459 答:应急计划:是指当一项可能的风险事件实际发生时项目团队将采取的预先确定的措施: 例如:当项目经理根据一个新的软件产品开发的实际进展情况,预计到该软件开发成果奖不能及时集成到正在按合同进

iOS编程Cookbook第19章最后一个例子不能正常工作的解决办法

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Cookbook的第19章的11节中所要解决的是在App中显示iOS自带的日历编辑视图的问题. 例子代码是选择迄今为止1年前的第一个找到的日历事件,然后将其显示在日历编辑视图中. 日历编辑视图控制器是EKEventEditViewController的实例对象,按照书上的说明,其有一个event实例变量,如果在显示该控制器之前不对其赋值,即其值为nil则出现