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?

Original source