【发布时间】:2017-07-20 18:51:58
【问题描述】:
我来自 Python 背景,我试图了解 Ruby 包含与 Python 的多重继承相比如何。具体来说,我用相同的方法设置了两个模块来看看super 是如何工作的。
我添加了Mod,然后是Mod2,然后又是Mod。但是,A 似乎仍在引用 Mod2。
module Mod
def foo(x)
x**2
end
end
module Mod2
def foo(x)
x*2
end
end
class A
include Mod
def foo(x)
super(x) + 1
end
end
A.new.foo(5) == 26 # true
class A
include Mod2
def foo(x)
super(x) + 1
end
end
A.new.foo(5) == 11 # true
class A
include Mod
def foo(x)
super(x) + 1
end
end
A.new.foo(5) == 26 # false. Is 11
为什么第三个A.new.foo(5) 不返回26?
【问题讨论】: