我找到了一个代码段,如:
def l1 = ["hello","hi","hey"]
l1.sort{new Random()}
我无法弄清楚一个Random类对象如何用于对列表项进行排序/混洗? Random类对象如何返回Comparable / Comparator对象来执行操作?
在groovy doc中,我找到了声明: 使用给定的Closure对此Iterable进行排序以确定正确的顺序。 但是这里如何使用Random?
答案 0 :(得分:1)
我怀疑这里的意图是将随机值用作每个条目的Comparable
(即使用Iterable.sort(Closure closure)
的单参数闭包变体)。正是这些随机值被比较,从而决定了排序顺序。因此,这会导致随机排序顺序。
但是,我不相信这会导致定义明确的行为。文档没有定义是否:
sort
应如何回应不一致的Comparable
值。如果#1不成立,则会生成不一致的值 - 不清楚这是否会导致sort
实现做出古怪的事情。