实例方法
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 AsyncMapSequence max()用法及代码示例
- Swift AsyncMapSequence map(_:)用法及代码示例
- Swift AsyncMapSequence min()用法及代码示例
- Swift AsyncMapSequence min(by:)用法及代码示例
- Swift AsyncMapSequence compactMap(_:)用法及代码示例
- Swift AsyncMapSequence contains(_:)用法及代码示例
- Swift AsyncMapSequence contains(where:)用法及代码示例
- Swift AsyncMapSequence first(where:)用法及代码示例
- Swift AsyncMapSequence drop(while:)用法及代码示例
- Swift AsyncMapSequence prefix(_:)用法及代码示例
- Swift AsyncMapSequence flatMap(_:)用法及代码示例
- Swift AsyncMapSequence prefix(while:)用法及代码示例
- Swift AsyncMapSequence allSatisfy(_:)用法及代码示例
- Swift AsyncMapSequence reduce(_:_:)用法及代码示例
- Swift AsyncMapSequence filter(_:)用法及代码示例
- Swift AsyncMapSequence dropFirst(_:)用法及代码示例
- Swift AsyncThrowingFlatMapSequence min()用法及代码示例
- Swift AsyncPrefixWhileSequence reduce(_:_:)用法及代码示例
- Swift AsyncThrowingMapSequence reduce(_:_:)用法及代码示例
- Swift AsyncDropWhileSequence allSatisfy(_:)用法及代码示例
- Swift AsyncSequence dropFirst(_:)用法及代码示例
- Swift AsyncDropFirstSequence filter(_:)用法及代码示例
- Swift AsyncSequence reduce(_:_:)用法及代码示例
- Swift AsyncFlatMapSequence min()用法及代码示例
- Swift AsyncThrowingPrefixWhileSequence drop(while:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AsyncMapSequence max(by:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。