Rubí hace automáticamente símbolos no stringify al realizar un partido de expresiones regulares en ellos, que es fácil de hacer cuando se tiene las variables que contienen símbolos y se olvida de que es necesario llamar a #to_s en ellos antes de intentar un partido de expresiones regulares:¿Por qué Ruby no Symbol # = ~ (operador de concordancia regex)?
>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false
resulta que: = ~ se define en el objeto, la clase primordial de Ruby 1.8:
http://rubybrain.com/api/ruby-1.8.7/doc/index.html?a=M000308&name==~
por supuesto, la aplicación sólo devuelve falso, dejando a las subclases como cuerdas y Regexp a proporcionar implementaciones significativas.
¿Por qué Symbol no proporciona algo como lo siguiente?
def =~(pattern)
self.to_s =~ pattern
end
¿Alguno de los lingüistas de Ruby sabe?
He escrito una buena cantidad de código Ruby, y no tener Alguna vez me encontré con el problema, así que no puedo decir que sea tan fácil de hacer. –