用法一
flatMap(_:)
聲明
@preconcurrency func flatMap<SegmentOfResult>(_ transform: @escaping (Self.Element) async -> SegmentOfResult) -> AsyncFlatMapSequence<Self, SegmentOfResult> where SegmentOfResult : AsyncSequence
返回值
一個單一的扁平異步序列,包含 transform
生成的所有異步序列中的所有元素。
參數
transform
映射閉包。
transform
接受此序列的元素作為其參數並返回AsyncSequence
。
詳述
當您的轉換為每個元素生成異步序列時,使用此方法接收 single-level 異步序列。
在此示例中,名為 Counter
的異步序列生成從 1
到 5
的 Int
值。轉換閉包接受接收到的 Int
並返回一個新的 Counter
,它的計數很高。例如,當變換從基本序列接收到 3
時,它會創建一個新的 Counter
來生成值 1
、 2
和 3
。 flatMap(_:)
方法 “flattens” 將生成的 sequence-of-sequences 轉換為單個 AsyncSequence
。
let stream = Counter(howHigh: 5)
.flatMap { Counter(howHigh: $0) }
for await number in stream {
print("\(number)", terminator: " ")
}
// Prints: 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
可用版本
用法二
flatMap(_:)
聲明
@preconcurrency func flatMap<SegmentOfResult>(_ transform: @escaping (Self.Element) async throws -> SegmentOfResult) -> AsyncThrowingFlatMapSequence<Self, SegmentOfResult> where SegmentOfResult : AsyncSequence
返回值
一個單一的扁平異步序列,包含 transform
生成的所有異步序列中的所有元素。當從基本序列的最後一個元素創建的最後一個序列結束時,或者當transform
引發錯誤時,序列結束。
參數
transform
error-throwing 映射閉包。
transform
接受此序列的元素作為其參數並返回AsyncSequence
。如果transform
引發錯誤,則序列結束。
詳述
當您的轉換為每個元素生成異步序列時,使用此方法接收 single-level 異步序列。
在此示例中,名為 Counter
的異步序列生成從 1
到 5
的 Int
值。轉換閉包接受接收到的 Int
並返回一個新的 Counter
,它的計數很高。例如,當變換從基本序列接收到 3
時,它會創建一個新的 Counter
來生成值 1
、 2
和 3
。 flatMap(_:)
方法 “flattens” 將生成的 sequence-of-sequences 轉換為單個 AsyncSequence
。但是,當閉包接收到 4
時,它會引發錯誤,從而終止序列。
do {
let stream = Counter(howHigh: 5)
.flatMap { (value) -> Counter in
if value == 4 {
throw MyError()
}
return Counter(howHigh: value)
}
for try await number in stream {
print ("\(number)", terminator: " ")
}
} catch {
print(error)
}
// Prints: 1 1 2 1 2 3 MyError()
可用版本
相關用法
- Swift TaskGroup filter(_:)用法及代碼示例
- Swift TaskGroup first(where:)用法及代碼示例
- Swift TaskGroup max()用法及代碼示例
- Swift TaskGroup contains(where:)用法及代碼示例
- Swift TaskGroup allSatisfy(_:)用法及代碼示例
- Swift TaskGroup prefix(_:)用法及代碼示例
- Swift TaskGroup contains(_:)用法及代碼示例
- Swift TaskGroup reduce(_:_:)用法及代碼示例
- Swift TaskGroup next()用法及代碼示例
- Swift TaskGroup map(_:)用法及代碼示例
- Swift TaskGroup compactMap(_:)用法及代碼示例
- Swift TaskGroup drop(while:)用法及代碼示例
- Swift TaskGroup min(by:)用法及代碼示例
- Swift TaskGroup dropFirst(_:)用法及代碼示例
- Swift TaskGroup max(by:)用法及代碼示例
- Swift TaskGroup prefix(while:)用法及代碼示例
- Swift TaskGroup min()用法及代碼示例
- Swift TaskGroup.Iterator用法及代碼示例
- Swift TaskPriority init(rawValue:)用法及代碼示例
- Swift TaskPriority ...(_:)用法及代碼示例
- Swift TaskLocal用法及代碼示例
- Swift TaskPriority ...(_:_:)用法及代碼示例
- Swift TaskLocal description用法及代碼示例
- Swift TaskPriority ..<(_:_:)用法及代碼示例
- Swift TaskPriority ..<(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 TaskGroup flatMap(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。