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