用法一
初始化器
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(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。