2010-11-09 13 views
5

poiché i simboli non rispondono al metodo < => utilizzato dall'ordinamento, qualcuno ha una tecnica per ordinare una matrice di simboli? interessato a vedere alcune altre idee.ruby: ordina la matrice di simboli

+1

Si dovrebbe ricordare che un simbolo non è una stringa, ma piuttosto un numero con un bel nome. Ho capito la tua domanda come ordinare i simboli con 'object_id' – guns

+1

Non posso dirlo con certezza, ma se stai ordinando i simboli in ordine alfabetico, potresti fare qualcosa di sbagliato. –

risposta

16

Bene, symbols.sort_by {|sym| sym.to_s} funziona.

Anche in 1.9 simboli do rispondere a <=>, quindi non si può fare solo symbols.sort.

+3

E su 1.8.7, 'symbols.sort_by &: to_s' – guns

+0

@guns: utilizzando il simbolo # to_proc per ordinare i simboli? Deve essere ironico! –

5

Se si desidera lavorare su rubini più anziani, come se fossero 1.9 si può semplicemente definire < => il simbolo

class Symbol 
    include Comparable 

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

Questa fantastica risposta è fantastica. –

2

È possibile utilizzare il backports gemma:

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