除了排序之外,是否有使用ruby组合比较运算符/宇宙飞船运算符?

时间:2016-06-10 02:30:26

标签: ruby sorting spaceship-operator

Ruby的组合比较运算符或宇宙飞船运算符用于排序。我将此运算符与sort函数一起使用,并且无法理解此运算符的机制。该运营商还有其他用途吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Comparable module需要宇宙飞船运营商。基本上:您的班级include Comparable,在此课程中定义<=>方法,&gt;,&lt; =,&lt; ,&gt; =,==,和之间?为该类自动定义方法。