Collection
协议是 Swift 标准库中一个重要的协议,它定义了集合类型的一些特性。与Sequence
协议相比,Collection
协议拥有以下几个特点:
- 不同于
Sequence
,Collection
的元素个数是有限 - 可以重复迭代多次,每次
for-in
迭代都是从头开始迭代。 Collection
协议继承自Sequence
,可以说Collection
是一种特殊的Sequence
。
下面就用一个具体的实例实现一个Collection
。
这里我们定义一个Class
用于表示一个班级,Student
用于表示班级里的一个学生。
1 | struct Student { |
使用如下:
1 | let s1 = Student(name: "aa", age: 10, no: 100) |
实现Collection
协议有几个关键的地方:
startIndex
与endIndex
两个计算属性的复杂度应该是 O(1)index(after:)
这个方法的实现,针对相同的输入必须要有相同的输出
以上就是Collection
协议的介绍,Swift 标准库中还有很多其他协议,之后会一一介绍。
参考资料:
Collection
Everything You Ever Wanted to Know on Sequence & Collection