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 ... 
随机推荐
- java.security KeyPairGenerator
			KeyPairGenerator 类用于生成公钥和私钥对.密钥对生成器是使用 getInstance 工厂方法(返回一个给定类的实例的静态方法)构造的. 特定算法的密钥对生成器可以创建能够与此算法一起 ... 
- 020_Python3 File(文件) 方法
			1.open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open ... 
- DVWA暴力破解练习
			本周学习内容: 1.结合DVWA学习Web应用安全权威指南 实验内容: 使用BurpSuite工具进行DVWA暴力破解 实验步骤: 1.打开DVWA,进入DVWA Security模块将 Level修 ... 
- Jenkins 更改工作目录;
			更改 Jenkins 工作目录:如果使用 tomcat 加载的 war包形式启动 默认配置文件 /root/.jenkins Jenkins 默认配置文件 /root/.jenkins/config ... 
- Pytest权威教程03-原有TestSuite的执行方法
			目录 原有TestSuite的执行方法 使用pytest运行已存在的测试套件(test suite) 返回: Pytest权威教程 原有TestSuite的执行方法 Pytest可以与大多数现有的测试 ... 
- CLion201914 下载安装
			链接:https://pan.baidu.com/s/12Gzo8gL3iUFoL5wok6L_BQ 密码:7vw4 56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1NlpTNVBRM ... 
- elasticsearch_dsl.exceptions.ValidationException: You cannot write to a wildcard index.
			elasticsearch_dsl.exceptions.ValidationException: You cannot write to a wildcard index. 这里是因为版本不匹配的问 ... 
- 初识kubernetes
			Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统.Kubernetes 的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完 ... 
- CENTOS7开启SSH服务
			CENTOS7开启SSH服务 CENTOS7开启SSH服务以后,XSHELL,WINSCP才能成功连接CENTOS7. 开启ssh服务需要root权限,先用root账户登陆. 安装SSH: yum i ... 
- python 画园和椭圆
			from matplotlib.patches import Ellipse, Circle import matplotlib.pyplot as plt fig = plt.figure() ax ... 
