groovy sort with comparator syntax
groovy, sorting
Solution
When the `Closure` used by `sort` has two parameters, it acts like a traditional `Comparator`. That is, for each comparison that is done during the sort, between two elements `a` and `b`, it returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
In your particular scenario, the comparison is the result of using the spaceship operator `<=>`. In other words, you are effectively sorting your elements in ascending order.
For example, if you had the list `[ 3, 2, 1 ]`, the result of using that sort would be `[ 1, 2, 3 ]`.
Thus, `m.sort{a,b -> a.value <=> b.value}` is roughly the equivalent of using the following `compare` function:
int compare(a, b) {
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
}
Problem
I am just getting my feet wet with gremlin. I understand that gremlin is based on groovy. I found the documentation here, but I am still not sure what the syntax means. I am a bit confused as to how the syntax of sort with a comparator works: ``` m.sort{a,b -> a.value <=> b.value} ``` Could someone explain what all the different bits between the `{` and `}` mean?