インスタンスメソッド


compactMap(_:)


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


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

tvOS 13.0+ visionOS 1.0+ watchOS 6.0+

@preconcurrency
func compactMap<ElementOfResult>(_ transform: @escaping (Self.Element) async ->
ElementOfResult?) -> AsyncThrowingCompactMapSequence<Self, ElementOfResult>




パラメータ


transform

マッピング クロージャ。transform は、このシーケンスの要素をそのパラメーターとして受け入れ、同じ型または異なる型の変換された値を返します。



戻り値


transform クロージャによって生成された nil でない要素を順番に含む非同期シーケンス。



議論


compactMap(_:) メソッドを使用すると、基本の非同期シーケンスから受け取ったすべての要素を変換し、クロージャから返された nil を破棄することもできます。通常、このメソッドは要素の型をある型から別の型に変換する場合に使用します。


以下の例では、Counter という非同期シーケンスが 1 から 5 までの Int 値を生成します。compactMap(_:) メソッドに提供されたクロージャは、各 Int 値を取り、romanNumeralDict 辞書から対応する String を検索します。4 に対応するキーが存在しないため、クロージャはこの場合 nil を返します。compactMap(_:) メソッドは、変換後の非同期シーケンスからこのキーを省略します。


let romanNumeralDict: [Int: String] =
    [1: "I", 2: "II", 3: "III", 5: "V"]

let stream = Counter(howHigh: 5)
        .compactMap { romanNumeralDict[$0] }
    for await numeral in stream {
        print(numeral, terminator: " ")
    }
    // Prints "I II III V "





以下も見よ


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


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 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 flatMap<SegmentOfResult>((Self.Element) async throws -> SegmentOfResult) -> AsyncThrowingFlatMapSequence<Self, SegmentOfResult>

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


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?

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














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ