グレムリンで足を濡らしています。グレムリンはグルーヴィーに基づいていることを理解しています。ドキュメンテーション here を見つけましたが、構文の意味がまだわかりません。
コンパレータを使用したソートの構文がどのように機能するかについて、私は少し混乱しています。
m.sort{a,b -> a.value <=> b.value}
誰かが{
および}
意味?
Closure
で使用されるsort
に2つのパラメーターがある場合、従来の Comparator
のように機能します。つまり、2つの要素a
とb
の間で、ソート中に行われる各比較に対して、負の整数、ゼロ、または正の整数を返します最初の引数が2番目の引数より小さい、等しい、または大きい。
特定のシナリオでは、比較は spaceship operator<=>
を使用した結果です。つまり、要素をascendingの順序で効果的に並べ替えます。
たとえば、リスト[ 3, 2, 1 ]
がある場合、そのソートを使用した結果 would be[ 1, 2, 3 ]
。
したがって、m.sort{a,b -> a.value <=> b.value}
はroughly次のcompare
関数を使用することと同等です。
int compare(a, b) {
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
}