Swift中Array类型是否遵守Sequence协议?
关于Array是否符合Sequence协议要求的解答
Array确实完全符合Sequence协议的所有要求,是Swift标准库中Sequence协议的标准实现类型之一,相关说明如下:
- 你观察到的
makeIterator()是Sequence协议要求的核心必填方法,Array对该方法的实现完全符合协议规范,返回的迭代器支持按索引顺序遍历数组内的全部元素。 - 你没有找到Array明确声明遵守Sequence协议的原因是Swift标准库的协议继承链设计:Array官方明确声明遵守的是
Collection协议,而Collection协议本身就继承自Sequence协议,只要满足Collection的所有实现要求,就自动满足Sequence的所有要求,因此不需要单独重复声明遵守Sequence。 - 你可以通过代码直接验证该继承关系:将Array实例赋值给
any Sequence类型的变量不会触发编译报错,直接证明Array的类型符合Sequence的约束:
let testSeq: any Sequence = [1, 2, 3, 4] // 编译正常,无类型不匹配错误
- 除此之外,所有Sequence协议提供的默认扩展方法,包括
forEach、map、filter、reduce等,Array都可以直接调用,也可以作为佐证。
内容的提问来源于stack exchange,提问作者Nala
相关产品推荐
相关产品推荐

