我刚刚面对这种行为,我真的不明白。Ruby mixin覆盖方法说明
module M
def foo
"module_foo"
end
end
class C
def foo
"class_foo"
end
include M
end
puts C.new.foo
为什么C.new.foo
实际上返回class_foo
?我很确定这个方法应该被模块中的方法覆盖。另一件事,与super
更换"class_foo"
使得C.new.foo
回报`“module_foo”
这实际上看起来像模块定义的类的实例方法之前以某种方式包括在内。你能澄清一下吗?
嘿,这么明显。谢谢!! – 2012-03-22 18:13:06