【发布时间】:2011-06-10 01:37:33
【问题描述】:
有没有办法通过在模块中创建新的操作符方法,然后将该模块混合到类中来覆盖类的操作符?
例如,这会覆盖 Fixnum 的 + 运算符:
class Fixnum
def +(x)
product = x
product = product * self
return product
end
end
p 3 + 3
# => 9
这不会覆盖 Fixnum 的 + 运算符:
module NewOperators
def +(x)
product = x
product = product * self
return product
end
end
class Fixnum
include NewOperators
end
p 3 + 3
# => 6
【问题讨论】:
-
这是Overriding method by another defined in module 和Can you override a method by including a module? 的副本,我怀疑还有其他几个。简短的回答是:不,您不能用超类中的方法覆盖子类中的方法,因为继承不是这样工作的。恰恰相反。
标签: ruby