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

07-28 01:20
查看更多