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