siguiente fragmento de código es de rieles¿Cuál es el operador <= en las clases de Ruby?
def rescue_from(*klasses, &block)
options = klasses.extract_options!
unless options.has_key?(:with)
if block_given?
options[:with] = block
else
raise ArgumentError, "Need a handler. Supply an options hash that has a :with key as the last argument."
end
end
klasses.each do |klass|
key = if klass.is_a?(Class) && klass <= Exception
klass.name
elsif klass.is_a?(String)
klass
else
raise ArgumentError, "#{klass} is neither an Exception nor a String"
end
# put the new handler at the end because the list is read in reverse
self.rescue_handlers += [[key, options[:with]]]
end
end
end
Aviso al operador < =
¿qué es eso?
¿Por qué crees que es una "sobrecarga loca de operadores"? La relación de herencia impone un orden parcial en las clases y, en general, el símbolo utilizado para representar las relaciones que imponen ordenamientos parciales es '<=' (o más bien '≤' pero mientras ese es un nombre de método válido en Ruby, no es válido nombre del operador). Tiene razón en la medida en que el operador habitual para denotar una relación de subtipo es '<:', pero ese no es ni un método válido ni un nombre de operador en Ruby, así que personalmente siento que '<= 'es lo suficientemente bueno. Ciertamente supera el abuso común de usar '+' para establecer la unión (que debería ser '∪'). –