2016-06-10 40 views

回答

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 
+0

另一種常見用法是在'case'語句中。例如,'case a <=> b;當-1然後...;當0則...;當1然後...; .end'。 –

+0

'current_score'是一個局部變量。使用'+ ='分配給它是沒有意義的。你應該只有'+'。 – sawa

+0

好點,這只是一個超級快速的例子。 – Beartech

0

需要針對Comparable module飛船操作。基本上:include Comparable在你的班級裏,定義了一個<=>這個班的方法和>,< =,<,> =,==,和之間?方法會自動爲該類定義。