Swift - 关键字(typealias、associatedtype)
Typealias
- func distance(_ point: CGPoint, _ anotherPoint: CGPoint) -> Double {
- let dx = Double(anotherPoint.x - point.x)
- let dy = Double(anotherPoint.y - point.y)
- return sqrt(dx * dx + dy * dy)
- }
- let origin = CGPoint(x: 3, y: 0)
- let point = CGPoint(x: 4, y: 0)
- let d = distance(origin, point)
- func distance(_ point: CGPoint, _ anotherPoint: CGPoint) -> Double {
- let dx = Distance(anotherPoint.x - point.x)
- let dy = Distance(anotherPoint.y - point.y)
- return sqrt(dx * dx + dy * dy)
- }
- let origin = Location(x: 3, y: 0)
- let point = Location(x: 4, y: 0)
- let d = distance(origin, point)
- typealias Success = (_ data: String) -> Void
- typealias Failure = (_ error: String) -> Void
- func request(_ url: String, success: Success, failure: Failure) {
- // do request here ....
- }
typealias与泛型
- class Person<T> {}
- typealias Woker = Person
- typealias Worker = Person<T>
- class Person<T> {}
- typealias Woker = Person
- typealias Worker<T> = Person<T>
- class Person<T> {}
- typealias WorkId = String
- typealias Worker = Person<WorkId>
- protocol Cat {}
- protocol Dog {}
- typealias Pat = Cat & Dog
associatedtype关联类型
- //模型
- struct Model {
- let age: Int
- }
- //协议,使用关联类型
- protocol TableViewCell {
- associatedtype T
- func updateCell(_ data: T)
- }
- //遵守TableViewCell
- class MyTableViewCell: UITableViewCell, TableViewCell {
- typealias T = Model
- func updateCell(_ data: Model) {
- // do something ...
- }
- }
Swift - 关键字(typealias、associatedtype)的更多相关文章
- iOS开发——Swift篇&Swift关键字详细介绍
Swift关键字详细介绍 每一种语言都有相应的关键词,每个关键词都有他独特的作用,来看看swfit中的关键词: 关键词: 用来声明的: “ class, deinit, enum, extension ...
- Swift typealias associatedType
使用typealias为常用数据类型起一个别名, 一方面更容易通过别名理解该类型的用途, 另一方面还可以减少日常开发的代码量. typealias使用实例: // 网络请求常用回调闭包 typeali ...
- Swift 关键字汇总
常见的关键字有以下4种 与声明有关的关键字:class.deinit.enum.extension.func.import.init.let.protocol.static.struct.subscr ...
- Swift 关键字 inout - 让值类型以引用方式传递
两种参数传递方式 值类型 传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据. 引用类型 把参数本身引用(内存地址)传递过去,在调用的过程会影响原始数据. 在 Swift 众多数据类型中, ...
- [Swift]关键字:Self、self与super
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- swift 关键字willSet 和 didSet
// 下面是苹果给出的解释,就是在给属性设置新值的时候,可以在设置前和设置后做一些处理,这两个关键字就好像对该属性变化的监控 If you don’t need to compute the prop ...
- Swift类型转换 和 类型别名的定义(typealias)
(一)类型转换 类型转化在 Swift 中是比较严格的,不同类型之间可以认为是不能相互转化的,只能重新产生一个对象和值,并拷贝一份. 1.0 整型数值之间的转换. // 不同类型是不能直接相加的,这时 ...
- 一览Swift中的常用关键字
要学习Swift这门语言,就必须先了解Swift的关键字及对应的解释.这里就列一下在Swift中常用到的关键字. 关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符 ...
- Swift 2.2 的新特性
导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中Ted Kremenek所撰写的"Swift 2.2 Released!"文章进行了关于S ...
随机推荐
- 1016 部分A+B (15 分)
正整数 AAA 的“DAD_ADA(为 1 位整数)部分”定义为由 AAA 中所有 DAD_ADA 组成的新整数 PAP_APA.例如:给定 A=3862767A = 3862767 ...
- [luogu4799 CEOI2015 Day2] 世界冰球锦标赛(折半搜索)
传送门 Solution 折半搜索裸题,注意\(long long\) Code #include <cmath> #include <cstdio> #include < ...
- PAT 1090. Highest Price in Supply Chain
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- ajax跨域 (转)
题纲 关于跨域,有N种类型,本文只专注于ajax请求跨域(,ajax跨域只是属于浏览器”同源策略”中的一部分,其它的还有Cookie跨域iframe跨域,LocalStorage跨域等这里不做介绍), ...
- 阿里云对象存储服务,OSS使用经验总结,图片存储,分页查询
阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换 最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS.总的来说,比较简单,但是仍然遇到了几个问题,需要总结下. 1.O ...
- fzu 2136
#include<stdio.h> #define inf 1000000000 #define N 110000 int a[N]; struct node { int start,en ...
- JAVA的输入输出基本操作样例
这些类的继承关系有些类似,弄一个作为样例,理解一下其中的机制. package cc.openhome; import java.io.*; public class Member { private ...
- [Android]推断网络连接是否可用
/** * 推断移动网络是否开启 * * @param context * @return */ public static boolean isNetEnabled(Context context) ...
- nyoj-664-数字整除(水题)
数字整除 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍.当且仅当差是17的倍数时.原数也是 ...
- PAT Perfect Sequence (25)
题目描写叙述 Given a sequence of positive integers and another positive integer p. The sequence is said to ...