當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift TaskGroup min(by:)用法及代碼示例


實例方法

min(by:)

返回異步序列中的最小元素,使用給定的謂詞作為元素之間的比較。

聲明

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

返回值

序列的最小元素,根據 areInIncreasingOrder 。如果序列沒有元素,則返回 nil

參數

areInIncreasingOrder

如果其第一個參數應在其第二個參數之前排序,則返回 true 的謂詞;否則,false

詳述

當異步序列的值不符合 Comparable ,或者當您想對序列應用自定義排序時,請使用此方法。

謂詞必須是元素上的strict weak ordering。也就是說,對於任何元素 abc ,必須滿足以下條件:

  • areInIncreasingOrder(a, a) 始終是 false 。 (非反身性)

  • 如果 areInIncreasingOrder(a, b)areInIncreasingOrder(b, c) 都是 true ,那麽 areInIncreasingOrder(a, c) 也是 true 。 (傳遞可比性)

  • 如果根據謂詞,兩個元素都沒有排在另一個之前,則兩個元素是incomparable。如果ab不可比,bc不可比,那麽ac也是不可比的。 (傳遞不可比性)

以下示例使用撲克牌等級的枚舉 Rank ,範圍從 ace(低)到 king(高)。名為RankCounter 的異步序列生成數組的所有元素。提供給 min(by:) 方法的謂詞根據它們的 rawValue 對排名進行排序:


enum Rank: Int {
    case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king
}


let min = await RankCounter()
    .min { $0.rawValue < $1.rawValue }
print(min ?? "none")
// Prints: ace

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 TaskGroup min(by:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。