2014-01-10 10 views
9

Groovyには、宇宙船オペレータ<=>があり、比較を簡単に実装できます。私はどのようにしてgroovierの方法でチェーンし、次にコードを書くことができますか?この例では、価格を最初に比較し、次に両方が同じ価格であれば名前で商品を比較したいと思います。 0を返す<=>宇宙船演算子以来groovyの宇宙船オペレータをマルチレベルソートにチェーンするにはどうすればいいですか?


class Item implements Comparable { 
    int price 
    String name 

    int compareTo(Item other) { 
    int result = price <=> other.price 
    if (result == 0) { 
     result = name <=> other.name 
    } 
    return result 
    } 
} 

答えて

18

両方が等しく、0はGroovyの真実による偽であれば、あなたはあなたの並べ替え基準を効率的にチェーンにエルビス演算子?:を使用することができます。


class Item implements Comparable { 
    int price 
    String name 

    int compareTo(Item other) { 
    price <=> other.price ?: name <=> other.name 
    } 
} 
関連する問題