我刚刚做这个实验的Ruby类覆盖:没有继承
class A < Hash
def foo
'foo'
end
end
class A < Hash
def bar
'bar'
end
end
到目前为止,我得到的结果我所料,第二个声明扩展了第一个。不过,我对此感到惊讶:
class A
def call
puts foo
puts bar
end
end
上面的代码工作,但只有当我稍后声明它时。否则,我得到:
TypeError: superclass mismatch for class A
我可以假设,在Ruby中,它是安全的确保“原第一”的宣言后,解析跳过无副作用的超规格?
是的,这是正确的。 –
在你最后一次尝试中,它会尝试创建一个“Object”类,作为它的超类。所以,你得到的错误......并且是预期的。 –