array.max(by :)难以理解

  • 本文关键字:max by array swift
  • 更新时间 :
  • 英文 :


我似乎无法理解array.max(by :)操作员的说明背后的想法。

考虑以下代码行:

print([10, 2, 5, 1, 3].max { $0 > $1 })

我假设预期的输出应该为10,但实际上是1。功能,定义为:

A predicate that returns true if its first argument should be ordered before its second argument; otherwise, false.

我似乎无法理解这一说法。为什么相邻元素放置会影响函数结果?

NOTE :在现实世界示例中,数组将由非构型元素组成,其中一个人需要在其中比较两个对象的日期。我知道,如果要解决上述简单的示例,则可以简单地使用默认值array.max((运算符。

在Swift论坛中引用Steve Canon:

谓词参数定义了用于函数目的的"增加顺序"。当您使用>作为谓词时,您说a> b意味着a在您要使用的顺序之前是B。

在您的情况下

print([10, 2, 5, 1, 3].max { $0 > $1 })

数组元素的增加顺序为

10, 5, 3, 2, 1

和相对于该顺序的最大元素是1

如果目的是获得有关"自然排序"的最大元素,则简单地使用

print([10, 2, 5, 1, 3].max())

最新更新