我似乎无法理解Array.max(by:)运算符解释背后的想法。
考虑下面这行代码:
print([10, 2, 5, 1, 3].max { $0 > $1 })
A predicate that returns true if its first argument should be ordered before its second argument; otherwise, false.
我就是不能理解这句话。为什么相邻元素的放置会影响函数结果?
注释:在真实的示例中,数组将由非原语类型的元素组成,例如,需要比较两个对象的日期。我知道,如果要解决前面提到的简单示例,只需使用默认的Array.max()运算符即可。
发布于 2019-06-25 03:02:27
Swift论坛中的Quoting 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())
https://stackoverflow.com/questions/56742314
复制相似问题