具有独特闭包的太空飞船运营商的Groovy论证

时间:2012-09-24 15:27:20

标签: groovy parameters arguments closures unique

我对闭包不是很熟悉,而且我有一个,也许是一个非常棒的问题。 在Groovy文档中,有一个类集合的unique()方法的例子。

其中一人使用宇宙飞船运营商。 我知道在:

a <=> b
如果a&lt;

太空飞船运营商返回-1。 b,如果a == b则为0;如果a> b,则为1,如compareTo。

在带有闭包示例的Groovy Unique中:

assert [2,3,4] == [2,3,3,4].unique { a, b -> a <=> b }

1.- a,b参数在集合中的含义是什么? 是“a”[n]位置和“b”[n + 1]?

2.-宇宙飞​​船运营商将返回-1,0或1 这与独特的方法有什么关系?使用unique()有什么区别吗?我尝试了两种方式,它不断给我返回相同的结果

提前致谢

1 个答案:

答案 0 :(得分:2)

  1. ab只是集合中的两个项目。它们的顺序并不重要。你真正做的是将一个闭包传递给unique(),闭包定义了如何比较这些项。当需要比较两个项目时,Groovy的unique()将调用闭包。

  2. unique()的无参数版本对集合中的项目使用compareTo()。太空船运营商是另一种致电compareTo()的方式,这意味着是的,unique { a, b -> a <=> b }unique()相同。