用法一
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 AsyncMapSequence first(where:)用法及代码示例
- Swift AsyncMapSequence filter(_:)用法及代码示例
- Swift AsyncMapSequence max()用法及代码示例
- Swift AsyncMapSequence min()用法及代码示例
- Swift AsyncMapSequence compactMap(_:)用法及代码示例
- Swift AsyncMapSequence contains(_:)用法及代码示例
- Swift AsyncMapSequence max(by:)用法及代码示例
- Swift AsyncMapSequence contains(where:)用法及代码示例
- Swift AsyncMapSequence map(_:)用法及代码示例
- Swift AsyncMapSequence drop(while:)用法及代码示例
- Swift AsyncMapSequence min(by:)用法及代码示例
- Swift AsyncMapSequence prefix(_:)用法及代码示例
- Swift AsyncMapSequence prefix(while:)用法及代码示例
- Swift AsyncMapSequence allSatisfy(_:)用法及代码示例
- Swift AsyncMapSequence reduce(_:_:)用法及代码示例
- Swift AsyncMapSequence dropFirst(_:)用法及代码示例
- Swift AsyncThrowingFlatMapSequence min()用法及代码示例
- Swift AsyncPrefixWhileSequence reduce(_:_:)用法及代码示例
- Swift AsyncThrowingMapSequence reduce(_:_:)用法及代码示例
- Swift AsyncDropWhileSequence allSatisfy(_:)用法及代码示例
- Swift AsyncSequence dropFirst(_:)用法及代码示例
- Swift AsyncDropFirstSequence filter(_:)用法及代码示例
- Swift AsyncSequence reduce(_:_:)用法及代码示例
- Swift AsyncFlatMapSequence min()用法及代码示例
- Swift AsyncThrowingPrefixWhileSequence drop(while:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AsyncMapSequence flatMap(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。