6
votes

Ruby: Trier les symboles

Étant donné que les symboles ne répondent pas à la méthode <=> utilisée par Trier, quelqu'un a-t-il une technique pour trier un tableau de symboles? intéressé à voir d'autres idées.


2 commentaires

Vous devriez vous rappeler qu'un symbole n'est pas une chaîne, mais plutôt un nombre avec un joli nom. J'ai compris votre question comme comment trier les symboles par objet_id


Je ne peux pas dire avec certitude, mais si vous triez des symboles par ordre alphabétique, vous pouvez faire quelque chose de mal.


3 Réponses :


17
votes

Eh bien, symbole.sort_by {| sym | sym.to_s} fonctionne.

Aussi dans 1.9 symboles do répondez à <=> , vous pouvez donc simplement faire symbole.sort . .


2 commentaires

Et sur 1.8.7, symbole.sort_by &: to_s


@guns: Utiliser un symbole # to_proc pour trier les symboles? Ça doit être ironique!



5
votes

Si vous voulez travailler sur des rubis plus âgés comme si elles étaient 1.9, vous pouvez simplement définir sur le symbole

class Symbol
  include Comparable

  def <=>(other)
    self.to_s <=> other.to_s
  end
end


1 commentaires

Cette réponse géniale est géniale.



2
votes

Vous pouvez utiliser le BackPorts code> GEM:

require 'rubygems'
require 'backports/1.9.1/symbol/comparison'
[:a, :d, :c, :b].sort
# => [:a, :b, :c, :d]


0 commentaires