2010-11-09 8 views
5

ya que los símbolos no responden al método < => utilizado por el género, ¿alguien tiene una técnica para clasificar una matriz de símbolos? interesado en ver algunas otras ideasruby: ordena la matriz de símbolos

+1

Usted debe recordar que un Símbolo no es una Cadena, sino un número con un bonito nombre. Entendí su pregunta sobre cómo ordenar Símbolos por 'object_id' – guns

+1

No puedo decirlo con certeza, pero si ordena los símbolos alfabéticamente, puede estar haciendo algo mal. –

Respuesta

16

Bueno, symbols.sort_by {|sym| sym.to_s} funciona.

También en 1.9 símbolos do responden a <=>, entonces usted puede simplemente hacer symbols.sort.

+3

Y en 1.8.7, 'symbols.sort_by &: to_s' – guns

+0

@guns: ¿Utiliza Symbol # to_proc para ordenar símbolos? ¡Eso debe ser irónico! –

5

Si desea trabajar en rubíes mayores como si fueran 1.9 sólo se puede definir < => en símbolo

class Symbol 
    include Comparable 

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

Esta increíble respuesta es increíble. –

2

Puede utilizar el backports joya:

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