2010-11-09 22 views
5

puisque les symboles ne répondent pas à la méthode < => utilisée par tri, est-ce que quelqu'un a une technique pour trier un tableau de symboles? intéressé à voir d'autres idées.ruby: trier les tableaux de symboles

+1

Vous devez vous rappeler que 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 'object_id' – guns

+1

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

Répondre

16

Bien, symbols.sort_by {|sym| sym.to_s} fonctionne.

Également dans 1.9 symboles faire répondre à <=>, alors là, vous pouvez simplement faire symbols.sort.

+3

Et au 1.8.7, 'symbols.sort_by &: to_s' – guns

+0

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

5

Si vous souhaitez travailler sur des rubis plus âgés comme si elles étaient 1.9, vous pouvez simplement définir < => sur Symbole

class Symbol 
    include Comparable 

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

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

2

Vous pouvez utiliser la pierre précieuse backports:

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