實例方法
max(by:)
返回異步序列中的最大元素,使用給定的謂詞作為元素之間的比較。
聲明
@warn_unqualified_access func max(by areInIncreasingOrder: (Self.Element, Self.Element) async throws -> Bool) async rethrows -> Self.Element?
返回值
序列的最小元素,根據 areInIncreasingOrder
。如果序列沒有元素,則返回 nil
。
參數
areInIncreasingOrder
如果其第一個參數應在其第二個參數之前排序,則返回
true
的謂詞;否則,false
。
詳述
當異步序列的值不符合 Comparable
,或者當您想對序列應用自定義排序時,請使用此方法。
謂詞必須是元素上的strict weak ordering
。也就是說,對於任何元素 a
、 b
和 c
,必須滿足以下條件:
-
areInIncreasingOrder(a, a)
始終是false
。 (非反身性) -
如果
areInIncreasingOrder(a, b)
和areInIncreasingOrder(b, c)
都是true
,那麽areInIncreasingOrder(a, c)
也是true
。 (傳遞可比性) -
如果根據謂詞,兩個元素都沒有排在另一個之前,則兩個元素是
incomparable
。如果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
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相關用法
- Swift AsyncStream max()用法及代碼示例
- Swift AsyncStream map(_:)用法及代碼示例
- Swift AsyncStream min()用法及代碼示例
- Swift AsyncStream min(by:)用法及代碼示例
- Swift AsyncStream first(where:)用法及代碼示例
- Swift AsyncStream prefix(_:)用法及代碼示例
- Swift AsyncStream drop(while:)用法及代碼示例
- Swift AsyncStream dropFirst(_:)用法及代碼示例
- Swift AsyncStream reduce(_:_:)用法及代碼示例
- Swift AsyncStream prefix(while:)用法及代碼示例
- Swift AsyncStream allSatisfy(_:)用法及代碼示例
- Swift AsyncStream contains(_:)用法及代碼示例
- Swift AsyncStream contains(where:)用法及代碼示例
- Swift AsyncStream flatMap(_:)用法及代碼示例
- Swift AsyncStream init(_:bufferingPolicy:_:)用法及代碼示例
- Swift AsyncStream init(unfolding:onCancel:)用法及代碼示例
- Swift AsyncStream filter(_:)用法及代碼示例
- Swift AsyncStream compactMap(_:)用法及代碼示例
- Swift AsyncStream用法及代碼示例
- Swift AsyncSequence dropFirst(_:)用法及代碼示例
- Swift AsyncSequence reduce(_:_:)用法及代碼示例
- Swift AsyncSequence first(where:)用法及代碼示例
- Swift AsyncSequence prefix(_:)用法及代碼示例
- Swift AsyncSequence map(_:)用法及代碼示例
- Swift AsyncSequence allSatisfy(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 AsyncStream max(by:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。