我只是用gremlin弄湿了脚。据我所知,gremlin基于groovy。我找到了文档here,但我仍然不确定语法的含义。
我对比较器的排序语法如何工作有点困惑:
m.sort{a,b -> a.value <=> b.value}
有人可以解释{
和}
之间的所有不同位是什么意思吗?
答案 0 :(得分:43)
当Closure
使用的sort
有两个参数时,它就像传统的Comparator
一样。也就是说,对于在排序期间完成的每个比较,在两个元素a
和b
之间进行的比较,当第一个参数小于时,返回负整数,零或正整数,等于或大于第二个。
在您的特定情况下,比较是使用spaceship operator <=>
的结果。换句话说,您正在以升序顺序对元素进行有效排序。
例如,如果您有列表[ 3, 2, 1 ]
,则使用该排序would be [ 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;
}
}
答案 1 :(得分:5)