11

Groovy 有 spaceship 运算符<=>,它提供了一种简单的方法来实现比较。我怎样才能以更时髦的方式链接它,然后是下面的代码?在此示例中,我想先按价格比较商品,如果两者价格相同,再按名称比较商品。


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

1 回答 1

28

由于<=>根据 Groovy Truth,如果两者相等且 0 为假,则 spaceship 运算符返回 0,因此您可以使用 elvis 运算符?:有效地链接您的排序标准。


class Item implements Comparable {
  int price
  String name

  int compareTo(Item other) {
    price <=> other.price ?: name <=> other.name
  }
}
于 2014-01-10T15:20:11.687 回答