ruby's <=> Operator und Sortiermethode

player1 = Player.new("moe")
player2 = Player.new("larry",60)
player3 = Player.new("curly", 125)
@players = [player1, player2, player3]

Above habe ich einige Player-Objekte erstellt und sie dem zuvor leeren Array @ players hinzugefügt.

Dann habe ich <=> Folgendes neu definiert:

def <=>(other)
    other.score <=> score
end 

Ich kann dann diesen Code ausführen

@players.sort

und meine Reihe von Spielerobjekten in @players werden von Highscore nach Lowscore sortiert. Ich denke, das sieht für mich ein bisschen kastelig aus. Mir ist etwas unklar, was hier los ist. Wie finde ich heraus, was sich hinter den Kulissen abspielt?

lles was ich weiß ist, dass, wenn Sie zwei Werte nehmen und den Raumschiffoperator / allgemeinen Vergleichsoperator verwenden:

2 <=> 1   
=> 1

1 <=> 2
=> -1

1 <=> 1
=>0

Manchmal scheint es, als ob in Ruby eine Menge untergeordneter Dinge vor sich gehen, die ich auf der hohen Ebene, in der ich programmiere, nicht sehen kann. Dies scheint natürlich zu sein ... aber dieser Fall scheint besonders von den untergeordneten Vorgängen entfernt zu sein der Sortiermethode. Wie benutzt sort den Raumschiffoperator? Warum wird der Raumschiffoperator so neu definiert, wie wir es jetzt ermöglicht haben, Objekte zu sortieren?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage