Sorting 带有比较器语法的groovy排序
我刚被小精灵弄湿了脚。我知道gremlin是基于groovy的。我找到了文档,但我仍然不确定语法是什么意思 我对带有比较器的sort语法的工作原理有点困惑:Sorting 带有比较器语法的groovy排序,sorting,groovy,Sorting,Groovy,我刚被小精灵弄湿了脚。我知道gremlin是基于groovy的。我找到了文档,但我仍然不确定语法是什么意思 我对带有比较器的sort语法的工作原理有点困惑: m.sort{a,b -> a.value <=> b.value} m.sort{a,b->a.value b.value} 有人能解释一下{和}之间的所有不同位是什么意思吗 当sort使用的Closure有两个参数时,它的作用类似于传统的。也就是说,对于排序期间进行的每个比较,在两个元素a和b之间,它返回一个负整数
m.sort{a,b -> a.value <=> b.value}
m.sort{a,b->a.value b.value}
有人能解释一下
{
和}
之间的所有不同位是什么意思吗 当sort
使用的Closure
有两个参数时,它的作用类似于传统的。也就是说,对于排序期间进行的每个比较,在两个元素a
和b
之间,它返回一个负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数
在您的特定场景中,比较是使用
的结果。换句话说,您正在有效地按升序对元素进行排序
例如,如果您有列表[3,2,1]
,则使用该排序的结果[1,2,3]
因此,m.sort{a,b->a.value b.value}
大致相当于使用以下compare
函数:
int compare(a, b) {
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
}
int比较(a,b){
if(ab){
返回1;
}否则{
返回0;
}
}
太空船操作符
是一个重载操作符,表示compareTo()
。基本上,ab
与a相同。与(b)
您给出的示例是使用带有闭包的sort()
函数(如Java8中的lambda)。其语法如下所示:
.method{closureParameters
->语句
}
因此,您的示例使用带有一个的sort()
函数,在闭包中使用spaceship(comparator)操作符
关于运算符重载的更多信息因此,
a,b->
只需将值a
和b
传递给比较器?@F21:是的,有点像。这就像一个函数,它接受两个参数,并根据返回spaceship操作符的函数体进行排序。我没有得到什么是
spaceship操作符。维基并没有太多无懈可击的答案!