一、Swift泛型介绍
泛型是为Swift 编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。 我们之前实际上已经使用过泛型,例如:Swift 的Array 和Dictionary 类型都是泛型集。
你可以创建一个Int 数组,也可创建一个String 数组,或者甚至于可以是任何其他Swift 的类型数据数组。同样的,你也可以创建存储任何指定类型的字典(Dictionary ),而且这些类型可以是没有限制的。
我们为什么要使用泛型呢?下面有个例子可以简单说明使用泛型的好处
我的理解:泛型就是先占坑,具体占坑做什么,随你
二、Swift泛型使用
Swift泛型相关使用可分为以下几点:
- 泛型函数
- 泛型类型
- 泛型约束
- 泛型协议
1. 泛型函数,函数参数或返回值类型用泛型表示
泛型函数使用实例
2. 泛型类型,在定义类型时使用泛型
使用也和泛型函数差不多,就是在类型名后面加上<泛型1,泛型2,…> ,然后在类型里面直接使用泛型即可
压栈:
出栈:
3. 泛型约束,为泛型类型添加约束
泛型约束大致分为以下几种:
- 继承约束,泛型类型必须是某个类的子类类型
- 协议约束,泛型类型必须遵循某些协议
- 条件约束,泛型类型必须满足某种条件
约束的大概使用格式
继承约束使用范例
协议约束使用范例
Swift 标准库中定义了一个Equatable 协议,该协议要求任何遵循的类型实现等式符(== )和不等符(!= )对任何两个该类型进行比较。所有的Swift 标准类型自动支持Equatable 协议。
4. 泛型协议和条件约束
上面的Equatable 协议实际上不是普通的协议,而是泛型协议,假设泛型类型必须遵循一个协议,此时就必须在协议中引入一个关联类型来解决。
|
请发表评论