我似乎无法理解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())