@OscarRyz en réplique ont permis de dissiper beaucoup pour moi sur la question sur la façon dont le genre fonctionne, esp
{ |x, y| y <=> x }
Sur la base de ma compréhension, je suis fournirai ici ce que l'état de la tableau serait après chaque comparaison pour les résultats de bloc ci-dessus.
Note: A obtenu avec la référence de l'impression des valeurs de paramaters de blocs e1, e2 de ruby-forum
1.9.3dev :001 > a = %w(d e a w f k)
1.9.3dev :003 > a.sort { |e1, e2| p [e2, e1]; e2 <=> e1 }
["w", "d"]
["k", "w"]
["k", "d"]
["k", "e"]
["k", "f"]
["k", "a"]
["f", "a"]
["d", "f"]
["d", "a"]
["d", "e"]
["e", "f"]
=> ["w", "k", "f", "e", "d", "a"]
A deviné état de réseau lors de l'exécution, après chaque comparaison:
[e2, e1] Comparsion Result Array State
["w", "d"] 1 ["w", "e", "a", "d", "f", "k"]
["k", "w"] -1 ["w", "e", "a", "d", "f", "k"]
["k", "d"] 1 ["w", "e", "a", "k", "f", "d"]
["k", "e"] 1 ["w", "k", "a", "e", "f", "d"]
["k", "f"] 1 ["w", "k", "a", "e", "f", "d"]
["k", "a"] 1 ["w", "k", "a", "e", "f", "d"]
["f", "a"] 1 ["w", "k", "f", "e", "a", "d"]
["d", "f"] -1 ["w", "k", "f", "e", "a", "d"]
["d", "a"] 1 ["w", "k", "f", "e", "d", "a"]
["d", "e"] -1 ["w", "k", "f", "e", "d", "a"]
["e", "f"] -1 ["w", "k", "f", "e", "d", "a"] (Result)
Merci,
Jignesh
Je pense qu'il vaut la peine que '<=> ajoutant' est une méthode définie dans 'Comparable' et mélangé avec' CHAINE'. '' Fixnum' et Bignum' définissent également '' <=>. Vous pouvez mettre en œuvre '' <=> dans une classe où le tri ou comparrisons sont nécessaires. –
J'ai souligné la phrase importante. x et y seront 2 éléments de votre tableau, choisis par l'algorithme de tri lui-même. – bltxd
Merci. Je l'ai maintenant! –