结构
Indexing
IndexingIterator
一种使用其索引迭代集合的类型。
声明
@frozen struct IndexingIterator<Elements> where Elements : Collection
概述
IndexingIterator
类型是任何未声明自己的集合的默认迭代器。它通过使用集合的索引来遍历集合中的每个值,从而充当迭代器。标准库中的大多数集合都使用IndexingIterator
作为它们的迭代器。
默认情况下,您创建的任何自定义集合类型都将继承一个返回 IndexingIterator
实例的 makeIterator()
方法,因此无需声明您自己的。创建自定义集合类型时,添加Collection
协议的最低要求:开始和结束索引以及访问元素的下标。定义了这些元素后,继承的makeIterator()
方法满足Sequence
协议的要求。
这是一个声明集合的最低要求的类型示例。 CollectionOfTwo
结构是一个固定大小的集合,它始终包含两个特定类型的元素。
struct CollectionOfTwo<Element>: Collection {
let elements: (Element, Element)
init(_ first: Element, _ second: Element) {
self.elements = (first, second)
}
var startIndex: Int { return 0 }
var endIndex: Int { return 2 }
subscript(index: Int) -> Element {
switch index {
case 0: return elements.0
case 1: return elements.1
default: fatalError("Index out of bounds.")
}
}
func index(after i: Int) -> Int {
precondition(i < endIndex, "Can't advance beyond endIndex")
return i + 1
}
}
因为 CollectionOfTwo
没有定义自己的 makeIterator()
方法或 Iterator
关联类型,所以它使用默认迭代器类型 IndexingIterator
。这个例子展示了如何创建一个 CollectionOfTwo
实例来保存一个点的值,然后使用 for
- in
循环进行迭代。
let point = CollectionOfTwo(15.0, 20.0)
for element in point {
print(element)
}
// Prints "15.0"
// Prints "20.0"
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift IndexingIterator shuffled()用法及代码示例
- Swift IndexingIterator prefix(_:)用法及代码示例
- Swift IndexingIterator elementsEqual(_:)用法及代码示例
- Swift IndexingIterator dropLast(_:)用法及代码示例
- Swift IndexingIterator joined(separator:)用法及代码示例
- Swift IndexingIterator filter(_:)用法及代码示例
- Swift IndexingIterator prefix(while:)用法及代码示例
- Swift IndexingIterator split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift IndexingIterator contains(_:)用法及代码示例
- Swift IndexingIterator flatMap(_:)用法及代码示例
- Swift IndexingIterator allSatisfy(_:)用法及代码示例
- Swift IndexingIterator lexicographicallyPrecedes(_:)用法及代码示例
- Swift IndexingIterator sorted()用法及代码示例
- Swift IndexingIterator shuffled(using:)用法及代码示例
- Swift IndexingIterator suffix(_:)用法及代码示例
- Swift IndexingIterator enumerated()用法及代码示例
- Swift IndexingIterator max(by:)用法及代码示例
- Swift IndexingIterator contains(where:)用法及代码示例
- Swift IndexingIterator min()用法及代码示例
- Swift IndexingIterator max()用法及代码示例
- Swift IndexingIterator reduce(_:_:)用法及代码示例
- Swift IndexingIterator min(by:)用法及代码示例
- Swift IndexingIterator dropFirst(_:)用法及代码示例
- Swift IndexingIterator sorted(by:)用法及代码示例
- Swift IndexingIterator starts(with:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 IndexingIterator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。