Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 带有比较器语法的groovy排序_Sorting_Groovy - Fatal编程技术网

Sorting 带有比较器语法的groovy排序

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之间,它返回一个负整数

我刚被小精灵弄湿了脚。我知道gremlin是基于groovy的。我找到了文档,但我仍然不确定语法是什么意思

我对带有比较器的sort语法的工作原理有点困惑:

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操作符。维基并没有太多无懈可击的答案!