¿Hay alguna manera de anular el operador de una clase, creando un nuevo método de operador dentro de un módulo, y luego mezclando ese módulo en la clase?sobrecarga de un operador a través de una mixin
por ejemplo, esto anula operador + de Fixnum:
class Fixnum
def +(x)
product = x
product = product * self
return product
end
end
p 3 + 3
# => 9
Esto no anula operador + de Fixnum:
module NewOperators
def +(x)
product = x
product = product * self
return product
end
end
class Fixnum
include NewOperators
end
p 3 + 3
# => 6
Este es un duplicado de [Método de anulación por otro definido en el módulo] (http://StackOverflow.Com/q/5944278/) y [¿Se puede anular un método incluyendo un módulo?] (Http: // StackOverflow .Com/q/6221619 /) más, sospecho, un par de otros. La respuesta corta es: no, no puede anular los métodos en una subclase con métodos en una superclase, porque esa no es la forma en que funciona la herencia. Es exactamente al revés. –