用法一
初始化器
init(_:)
创建一个包装基迭代器但其类型仅取决于基迭代器的元素类型的迭代器。
声明
init<I>(_ base: I) where Element == I.Element, I : IteratorProtocol
参数
base
type-erase 的迭代器。
详述
您可以使用AnyIterator
来隐藏更复杂的迭代器的类型签名。例如,以下示例中的 digits()
函数在集合上创建一个迭代器,该集合将 Range<Int>
实例的元素延迟映射到字符串。 digits()
函数不是返回具有封装集合实现的类型的迭代器,而是首先将迭代器包装在 AnyIterator
实例中。
func digits() -> AnyIterator<String> {
let lazyStrings = (0..<10).lazy.map { String($0) }
let iterator:
LazyMapSequence<Range<Int>, String>.Iterator
= lazyStrings.makeIterator()
return AnyIterator(iterator)
}
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
用法二
初始化器
init(_:)
创建一个迭代器,将给定的闭包包装在其
next()
方法中。声明
init(_ body: @escaping () -> Element?)
参数
body
返回可选元素的闭包。每次在生成的迭代器上调用
next()
方法时都会执行body
。
详述
下面的示例创建一个迭代器,它从整数 x
的初始值向上计数到 15:
var x = 7
let iterator: AnyIterator<Int> = AnyIterator {
defer { x += 1 }
return x < 15 ? x : nil
}
let a = Array(iterator)
// a == [7, 8, 9, 10, 11, 12, 13, 14]
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift AnyIterator suffix(_:)用法及代码示例
- Swift AnyIterator lexicographicallyPrecedes(_:)用法及代码示例
- Swift AnyIterator sorted()用法及代码示例
- Swift AnyIterator shuffled(using:)用法及代码示例
- Swift AnyIterator enumerated()用法及代码示例
- Swift AnyIterator allSatisfy(_:)用法及代码示例
- Swift AnyIterator contains(where:)用法及代码示例
- Swift AnyIterator joined()用法及代码示例
- Swift AnyIterator shuffled()用法及代码示例
- Swift AnyIterator min(by:)用法及代码示例
- Swift AnyIterator map(_:)用法及代码示例
- Swift AnyIterator filter(_:)用法及代码示例
- Swift AnyIterator split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift AnyIterator flatMap(_:)用法及代码示例
- Swift AnyIterator starts(with:)用法及代码示例
- Swift AnyIterator forEach(_:)用法及代码示例
- Swift AnyIterator split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift AnyIterator max()用法及代码示例
- Swift AnyIterator first(where:)用法及代码示例
- Swift AnyIterator dropLast(_:)用法及代码示例
- Swift AnyIterator reduce(_:_:)用法及代码示例
- Swift AnyIterator elementsEqual(_:)用法及代码示例
- Swift AnyIterator contains(_:)用法及代码示例
- Swift AnyIterator dropFirst(_:)用法及代码示例
- Swift AnyIterator reduce(into:_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AnyIterator init(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。