当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift AsyncCompactMapSequence max(by:)用法及代码示例


实例方法

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。也就是说,对于任何元素 abc ,必须满足以下条件:

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

  • 如果 areInIncreasingOrder(a, b)areInIncreasingOrder(b, c) 都是 true ,那么 areInIncreasingOrder(a, c) 也是 true 。 (传递可比性)

  • 如果根据谓词,两个元素都没有排在另一个之前,则两个元素是incomparable。如果ab不可比,bc不可比,那么ac也是不可比的。 (传递不可比性)

以下示例使用扑克牌等级的枚举 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+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AsyncCompactMapSequence max(by:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。