インスタンスメソッド


flatMap(_:)


エラーを throw する与えられた変換を呼び出した結果とこのシーケンスの各要素を連結する非同期シーケンスを作成します。


iOS 13.0+ iPadOS 13.0+ Mac Catalyst 13.0+ macOS 10.15+

tvOS 13.0+ visionOS 1.0+ watchOS 6.0+

@preconcurrency
func flatMap<SegmentOfResult>(_ transform: @escaping (Self.Element) async throws ->
SegmentOfResult) -> AsyncThrowingFlatMapSequence<Self, SegmentOfResult>
where SegmentOfResult : AsyncSequence




パラメータ


transform

エラーを throw するマッピングクロージャです。transform はこのシーケンスの要素をそのパラメータとして受け取り、AsyncSequence を返します。transform がエラーを throw した場合、シーケンスは終了します。



戻り値


transform によって生成されたすべての非同期シーケンス内のすべての要素を含む、単一のフラット化された非同期シーケンス。シーケンスは、基本のシーケンスの最後の要素から作成された最後のシーケンスが終了したとき、または transform がエラーを throw したときに終了します。



議論


変換によって各要素に対して非同期シーケンスを生成する場合、このメソッドを使用して単一レベルの非同期シーケンスを受け取ります。


以下の例では、Counter という非同期シーケンスが 1 から 5 までの Int 値を生成します。変換クロージャは受け取った Int を取り、その値まで数え上げる新しい Counter を返します。例えば、変換が基本のシーケンスから 3 を受け取ると、1、2、3 という値を生成する新しい Counter を作成します。flatMap(_:) メソッドは、結果として得られるシーケンスのシーケンスを単一の AsyncSequence に「フラット化」します。ただし、クロージャが 4 を受け取ると、エラーを throw してシーケンスを終了します。


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() "




以下も見よ


非同期の結果シーケンスへのアクセス


func makeAsyncIterator() -> TaskGroup<ChildTaskResult>.Iterator

この非同期シーケンスの要素を生成する非同期反復子を作成します。


func allSatisfy((Self.Element) async throws -> Bool) async rethrows -> Bool

非同期シーケンスによって生成されたすべての要素が与えられた述語を満たしているかどうかを示すブール値を返します。


func compactMap<ElementOfResult>((Self.Element) async throws -> ElementOfResult?) -> AsyncThrowingCompactMapSequence<Self, ElementOfResult>

値を返さない結果を省略し、基本シーケンスの要素にエラーを throw するクロージャをマップする非同期シーケンスを作成します。


func compactMap<ElementOfResult>((Self.Element) async -> ElementOfResult?) -> AsyncCompactMapSequence<Self, ElementOfResult>

与えられたクロージャを非同期シーケンスの要素にマップし、値を返さない結果を省略する非同期シーケンスを作成します。


func contains(Self.Element) async rethrows -> Bool

非同期シーケンスに与えられた要素が含まれているかどうかを示すブール値を返します。


func contains(where: (Self.Element) async throws -> Bool) async rethrows -> Bool

非同期シーケンスに、与えられた述語を満たす要素が含まれているかどうかを示すブール値を返します。


func drop(while: (Self.Element) async -> Bool) -> AsyncDropWhileSequence<Self>

与えられたクロージャが false を返すまで、その後、残りのすべての要素を渡し、基本非同期シーケンスから要素を省略します。


func dropFirst(Int) -> AsyncDropFirstSequence<Self>

基本非同期シーケンスから指定された数の要素を省略し、残りのすべての要素を渡します。


func filter((Self.Element) async -> Bool) -> AsyncFilterSequence<Self>

与えられた述語を満たす基本シーケンスの要素を順番に含む非同期シーケンスを作成します。


func first(where: (Self.Element) async throws -> Bool) async rethrows -> Self.Element?

指定された述語を満たすシーケンスの最初の要素を返します。


func map<Transformed>((Self.Element) async throws -> Transformed) -> AsyncThrowingMapSequence<Self, Transformed>

エラーを throw する与えられたクロージャを非同期シーケンスの要素にマップする非同期シーケンスを作成します。


func map<Transformed>((Self.Element) async -> Transformed) -> AsyncMapSequence<Self, Transformed>

与えられたクロージャを非同期シーケンスの要素にマップする非同期シーケンスを作成します。


func max() async rethrows -> Self.Element?

比較可能な要素の非同期シーケンス内の最大要素を返します。


func max(by: (Self.Element, Self.Element) async throws -> Bool) async rethrows -> Self.Element?

与えられた述語を要素間の比較として使用して、非同期シーケンス内の最大要素を返します。


func min() async rethrows -> Self.Element?

比較可能な要素の非同期シーケンス内の最小要素を返します。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ