Swift4.0复习枚举
1.枚举类型:
“Swift编程语言中,枚举类型属于值类型,而不是引用类型。”
摘录来自: “大话Swift 4.0”。 iBooks.
2.枚举类型和枚举对象的定义:
enum Enumeration {
case value1
case value2
case value3; case value4, value5
case value6
}
3.指定基本类型和原生值:
/// 将IntEnum指定为Int类型
enum IntEnum: Int {
case zero
case one = , two, three
case six = , seven, eight
}
print("one = \(IntEnum.one.rawValue)") var one = IntEnum(rawValue: 0)
if let o = one {
printf("one is: \(o)")
printf("one value is: \(o.rawValue)")
}
4.枚举关联值:
/// 这里定义了一个枚举MyTestEnum,
/// 它枚举case中含有关联值
enum MyTestEnum {
/// 这里的value1具有一个Void类型的关联值
case value1(Void)
/// 这里的value2具有一个Int类型的关联值
case value2(Int)
/// 这里的value3具有Float、Int、Void与String
/// 这四个类型的关联值
case value3(Float, Int, Void, String)
}
/// 这里用的关联值为10
let e2 = MyTestEnum.value2(10)
5.递归枚举:
“如果一个枚举类型中某一枚举case的其中一个关联值的类型为该枚举类型本身,那么我们称之为递归枚举”
摘录来自: “大话Swift 4.0”。 iBooks.
enum MyEnum {
/// 这里value1不指示对它插入间接层,
/// 因为其关联值不是该枚举类型本身
case value1(Int)
/// 对value2插入间接层,
/// 因为其关联值为该枚举类型本身
indirect case value2(MyEnum)
}
/// 这里在IndrectEnum枚举前直接添加indirect关键字,
/// 使得这里面所有的枚举case都插入了间接层。
/// 此时该枚举中的所有枚举case前都不能再放indirect关键字了
indirect enum IndrectEnum {
case value1(Int)
case value2(MyEnum)
}
6.枚举中的属性和方法:
/// 这里定义了一个FoodAndDrink枚举
enum MyEnum {
case one(Int)
case two(Int)
case three(Int)
/// 在枚举中可以定义初始化器
init() {
// 这里默认将当前枚举对象的值作为one枚举值,
// 其关联值为0
self = .one()
}
/// 这里定义了一个实例方法fetchValue,
/// 用于萃取当前枚举值的关联值
func fetchValue() -> (Int, String) {
switch self {
case let .one(value):
return (value, "one")
case .two(let value):
return (value, "two")
case .three(let value):
return (value, "three")
}
}
/// 这里定义了一个类型方法,
/// 根据输入参数的值来返回相应的枚举值
static func makeEnum(with value: Int) -> MyEnum {
switch value {
case ..< :
return .one(value)
case ..< :
return .two(value)
default:
return .three(value)
}
}
/// 这里定义了一个计算式实例属性,
/// 将当前枚举值设置为two枚举值,
/// 并带有指定的关联值
var computedProperty: Int {
set(i) {
self = .two(i)
}
get {
return self.fetchValue().
}
}
/// 这里定义了一个存储式类型属性
static var storedTypeProperty: Int =
/// 这里定义了一个计算式类型属性
static var comutedTypeProperty: Int {
set(i) {
storedTypeProperty = i
}
get {
return storedTypeProperty
}
}
}
func process[…]
Swift4.0复习枚举的更多相关文章
- Swift4.0复习特性、编译标志和检查API的可用性
1.Swift中的特性: @引出,后面紧跟特性名,圆括号带参数即可. @attribute(args) avaiable: 指明对象,函数,类型的可用性. @available(iOS 10.0, m ...
- Swift4.0复习访问控制与作用域
1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...
- Swift4.0复习错误处理
1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...
- Swift4.0复习扩展
1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...
- Swift4.0复习类
1.类的属性: 2.类的方法: 3.类作为引用类型: “Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例.” 摘录来自: “大话Swift 4.0”. ...
- Swift4.0复习协议
1.协议的定义: /// 定义一个协议MyProt protocol MyProt { /// 声明了一个实例方法foo, /// 其类型为:() -> Void func foo() ...
- Swift4.0复习结构体
1.基本语法: /** 定义了一个结构体 */ struct Structure { /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty = /// ...
- Swift4.0复习基本语法简介
1.五种类型: 包含五种类型——枚举(enum).结构体(struct).类(class).协议( protocol)以及函数类型(function types). 2.变量对象:var 3.常量对象 ...
- Swift4.0复习类型定义、类型投射等操作
1.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32 /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...
随机推荐
- Ubuntu 16.04LTS 安装和配置Bochs
环境:VMWare14+Ubuntu16.04 安装Bochs2.6.9 1.去官网下载 下载 bochs-2.6.9.tar.gz 2.安装一系列的包 因为Bochs 需要在 X11 环境下运行,因 ...
- python是什么编程语言。
python是一门动态解释性的强类型定义语言.
- Mysql分布式集群
一.准备 集群: 192.168.1.191 管理节点192.168.1.192 管理节点192.168.1.193 数据节点和API节点 192.168.1.194 数据节点和API节点 安 ...
- SIGAI机器学习第二十三集 高斯混合模型与EM算法
讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...
- ArcGIS Enterprise 10.7.1新特性:批量发布服务
ArcGIS Enterprise 10.7.1提供了批量发布GIS服务的功能,能大大简化GIS系统管理员的工作量. 作为发布人员和管理人员,支持向Portal for ArcGIS添加云存储.文件共 ...
- NOIP前做题记录
鉴于某些原因(主要是懒)就不一题一题写了,代码直接去\(OJ\)上看吧 CodeChef Making Change 传送门 完全没看懂题解在讲什么(一定是因为题解公式打崩的原因才不是曲明英语太差呢- ...
- Mac laravel: command not found
如果用的oh-my-zsh 安装laravel 提示找不到.可以试试下面的 export PATH=$HOME/bin:/usr/local/bin:~/.composer/vendor/bin:$P ...
- FCS省选模拟赛 Day1
Description Solution T1 shopping 目测是插板法乱搞一下 发现题解写的是容斥dp: \[ ans = \sum_i (-1)^ig[i] \] \(g[i]\)表示的有 ...
- 记录vsCode配置node开发环境
环境:win10,idea:vscode 1:安装Visual Studio Code 下一步下一步.(很早之前就安装了). 2:安装node. http://nodejs.cn/download/ ...
- ADT中创建Android的Activity
去创建Activity New->Other->Android->Android Activity->BlankActivity: 输入对应的信息: 创建完毕后,可以看到新建了 ...