groovy conditional



Come faccio a catena operatore di astronave groovy per l'ordinamento multilivello? (1)

Poiché l'operatore della navicella spaziale <=> restituisce 0 se entrambi sono uguali e 0 è falso secondo Groovy Truth, è possibile utilizzare l'operatore elvis ?: Per gestire in modo efficiente i criteri di classificazione.


class Item implements Comparable {
  int price
  String name

  int compareTo(Item other) {
    price <=> other.price ?: name <=> other.name
  }
}

Groovy ha l'operatore spaziale <=> che fornisce un modo semplice per implementare confronti. Come posso incatenarlo in un modo più groovy del codice qui sotto? In questo esempio voglio confrontare prima gli articoli per prezzo e poi per nome se entrambi hanno lo stesso prezzo.


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
  }
}




spaceship-operator