1

私は閉鎖にあまり慣れていないので、たぶん、ちょっとした質問があります。Groovy のドキュメントには、クラス コレクションの unique() メソッドの例があります。

そしてそのうちの1人は宇宙船オペレーターを使用しています。私はそれを知っています:

a <=> b

spaceship 演算子は、compareTo と同様に、a < b の場合は -1、a==b の場合は 0、a>b の場合は 1 を返します。

Groovy Unique とクロージャの例:

assert [2,3,4] == [2,3,3,4].unique { a, b -> a <=> b }

1.- コレクション内の a、b 引数は何を意味しますか? "a" は [n] の位置で、"b" は [n+1] ですか?

2.- 宇宙船のオペレーターは -1、0、または 1 を返しますが、unique メソッドはどうなりますか? unique() を使用するだけで違いはありますか? 両方の方法を試しましたが、同じ結果が返され続けます

前もって感謝します

4

1 に答える 1

2
  1. abは、コレクション内の 2 つのアイテムにすぎません。それらがどのような順序であるかは実際には問題ではありません。実際に行っているのは にクロージャーを渡すことunique()であり、クロージャーはアイテムを比較する方法を定義します。unique()クロージャーは、2 つの項目を比較する必要があるときにGroovy によって呼び出されます。

  2. コレクション内の項目に対するunique()usesの引数なしバージョン。compareTo()宇宙船オペレーターは を呼び出すもう 1 つの方法です。compareTo()つまり、yesunique { a, b -> a <=> b }は と同じですunique()

于 2012-09-24T15:54:58.847 に答える