インスタンスメソッド


max(by:)


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


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

tvOS 13.0+ visionOS 1.0+ watchOS 6.0+

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




パラメータ


areInIncreasingOrder

その最初の引数をその 2 番目の引数の前に順序付ける必要がある場合は true を返し、それ以外の場合は false を返す述語。



戻り値


areInIncreasingOrder に基づくシーケンスの最小要素。シーケンスに要素がない場合は nil を返します。



議論


このメソッドは、非同期シーケンスの値が Comparable に準拠していない場合、またはシーケンスに独自の順序付けを適用したい場合に使用します。


述語は、要素に対する 厳密に弱い順序付け でなければなりません。つまり、任意の要素 a、b、c について、以下の条件が満たされていなければなりません。


  • areInIncreasingOrder(a, a) は常に false です。(反射不可能性)

  • areInIncreasingOrder(a, b)areInIncreasingOrder(b, c) が両方とも true である場合、areInIncreasingOrder(a, c)true です。(推移的比較可能性)

  • 述語に従ってどちらの要素も他方より前に順序付けられていない場合、2 つの要素は 比較不可能 です。a と b が比較不可能で、かつ b と c が比較不可能である場合、a と c も比較不可能です。(推移的比較不可能)

  • 以下の例では、トランプのランクの列挙型 Rank を使用しています。ランクは ace(最下位)から king (最上位)までの範囲です。RankCounter という非同期シーケンスが、配列のすべての要素を生成します。max(by:) メソッドに提供される述語は、rawValue に基づいてランクを並べます。


    enum Rank: Int {
        case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king
    }
    
    let max = await RankCounter()
        .max { $0.rawValue < $1.rawValue }
    print(max ?? "none")
    // Prints "king"
    




    以下も見よ


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


    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 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 min() async rethrows -> Self.Element?

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














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ