operator elvis groovy chaining spaceship-operator

groovy - elvis - <=> ruby



¿Cómo puedo encadenar a la nave espacial de Groovy para la clasificación multinivel? (1)

Dado que el operador de nave espacial <=> devuelve 0 si ambos son iguales y 0 es falso de acuerdo con Groovy Truth, ¿puede utilizar el operador elvis ?: Para encadenar eficazmente sus criterios de clasificación.

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

Groovy tiene el operador de nave espacial <=> que proporciona una manera fácil de implementar comparaciones. ¿Cómo puedo encadenarlo de una manera más groovy que el siguiente? En este ejemplo, quiero comparar los artículos por precio primero y luego por nombre si ambos tienen el mismo precio.

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