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
}
}
最佳答案
由于根据Groovy Truth,如果宇宙飞船运算符<=>
如果两者相等且0为假,则返回0,因此您可以使用elvis运算符?:
有效地链接您的排序条件。
class Item implements Comparable {
int price
String name
int compareTo(Item other) {
price <=> other.price ?: name <=> other.name
}
}