Swift4.0复习扩展
1.扩展计算式属性:
2.对方法进行扩展:
- /// 定义枚举类型Light,
- /// 它指定了基本类型String
- enum Light: String {
- case red = "red"
- case green = "green"
- case blue = "blue"
- }
- /// 对Light枚举类型进行扩展
- extension Light {
- /// 扩展出不带参数的初始化器方法
- init() {
- // 这里默认值设定为red
- self = .red
- }
- /// 扩展出描述方法
- func discribe() -> String {
- return self.rawValue
- }
- /// 扩展出下标
- subscript(index: Int) -> Light {
- let matchStrings = ["red", "green", "blue"]
- // 找到当前枚举值所处的索引位置
- let currIndex = matchStrings.index {
- return $ == self.rawValue
- }!
- // 将当前索引位置与指定的索引相加,
- // 然后模2,
- // 得到最终的枚举值
- return Light(rawValue: matchStrings[(currIndex + index) % ])!
- }
- }
- // 使用扩展出的初始化器方法创建Light枚举实例
- let light = Light()
- // 调用扩展出的discribe方法
- print("current light: \(light.discribe())")
- // 使用扩展出的下标
- print("light[0] = \(light[0])")
- print("light[1] = \(light[1])")
- print("light[2] = \(light[2])")
3.对协议的扩展:
4.对已有类型做协议遵循的扩展:
5.对泛型类型进行扩展:
6.用一条泛型where从句进行扩展:
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.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32 /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...
- 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.枚举类型: “Swift编程语言中,枚举类型属于值类型,而不是引用类型.” 摘录来自: “大话Swift 4.0”. iBooks. 2.枚举类型和枚举对象的定义: enum Enumeratio ...
- Swift4.0复习闭包
1.闭包的定义和调用: _ = { (param1: Int, param2: Float, param3: Void) -> return_type in // 闭包执行代码 /* ... * ...
随机推荐
- Ubuntu 16.04LTS 安装和配置Bochs
环境:VMWare14+Ubuntu16.04 安装Bochs2.6.9 1.去官网下载 下载 bochs-2.6.9.tar.gz 2.安装一系列的包 因为Bochs 需要在 X11 环境下运行,因 ...
- 学习Spring-Data-Jpa(六)---spring-data-commons中的repository
1.spring-data-commons项目 spring-data-commons项目是所有spring-data项目的核心,我们来看一下该项目下的repository包中的接口和注解. 2.Re ...
- 初始SpringBoot
导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...
- 01_搭建新浪云SAE
Step1:注册新浪云计算平台用新浪微博登陆新浪云计算平台,网址:http://sae.sina.com.cn/ 登陆成功之后会跳转到安全设置页面,安全设置页面要填写的东西比较多,需要注意:安全设置里 ...
- DVWA命令注入扣动分析
本周学习内容: 1.学习web应用安全权威指南: 2.观看安全学习视频: 实验内容: 进行DVWA命令注入漏洞 实验步骤: Low 1.打开DVWA,进入DVWA Security模块将 Level修 ...
- am335x system upgrade kernel usb stroage(十)
1 Scope of Document This document describes USB hardware design, support stardard usb2.0 port o ...
- nyar4psg: Cannot find a class or type named "MultiMarker"
Cannot find a class or type named "MultiMarker" 是一种常见错误,产生的原因是Library里面有1个以上的ar库. 以我的电脑为例, ...
- AtCoder Grand Contest 020 题解
传送门 怎么又是\(tourist\)神仙的题-- \(A\) 咕咕 int n,a,b; int main(){ scanf("%d%d%d",&n,&a,&am ...
- 使用IDEA运行CAS5.3服务器
在上节中,我们运行CAS服务器是打成war包在tomcat中进行运行,这节介绍在IDEA中运行CAS服务器. 1.下载CAS 模板 Overlay Template,我这里使用 Apereo CAS ...
- python常用规范
Python代码规范和命名规范 前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 目录 一.简明概述 1.编码 如无特殊情况, 文件一 ...