0

Ruby 的组合比较运算符或宇宙飞船运算符用于排序。我把这个算子和sort函数一起用了,不明白这个算子的机制。这个运算符还有其他用途吗?

4

2 回答 2

5

您基本上是在询问两个值是否大于、小于或等于一个运算符。您可以使用它返回一个值来告诉方法递增、递减或什么都不做。

1 <=> 3 returns -1
3 <=> 1 returns 1
3 <=> 3 returns 0

例如,如果你有一种记分方法,你赢了一场比赛就得一分,输一场比赛就减一分,或者平局没有变化……

def score(player_1, player_2, current_score)
  current_score + player_1 <=> player_2
end

所以...

score(1,2,0)
#=> -1
score(1,3,-1)
#=> -2
score(3,2,-2)
#=> -1
score(3,0,-1)
#=> 0
score(4,0,0)
#=> 1
score(3,0,1)
#=> 2
score(3,3,2)
#=> 2
于 2016-06-10T02:36:05.407 回答
0

Comparable 模块需要宇宙飞船操作员。基本上:在你的类中,在这个类和 >、<=、<、>=、== 和之间include Comparable定义一个方法?<=>方法是自动为该类定义的。

于 2016-06-10T10:02:34.600 回答