什么时候Ruby类可以有多个超类
发布时间:2020-12-17 03:40:35 所属栏目:百科 来源:网络整理
导读:为什么下面的代码会像我希望的那样运行?我的印象是一个类只能有一个超类,并且在第一次定义类时放置除了原始超类之外的其他东西会引发类型不匹配异常. class Testendclass MyTest Test def run p 'my test' endendclass MyTest Object def run p 'redefine m
为什么下面的代码会像我希望的那样运行?我的印象是一个类只能有一个超类,并且在第一次定义类时放置除了原始超类之外的其他东西会引发类型不匹配异常.
class Test end class MyTest < Test def run p 'my test' end end class MyTest < Object def run p 'redefine my test' end end MyTest.new.run 结果 redefine my test 解决方法
只有当第二个类声明继承自Object时,它才适用于我(Ruby 1.9.2和1.9.3). MI的任何其他尝试都会引发TypeError.
它也不会改变类的继承.因此MyTest.superclass即使在课程MyTest<之后仍然保持测试宾语 我认为这是因为在定义新类时,Object是默认的超类.从docs: new(super_class=Object) → a_class 因此,当Object作为超类给出时,它会在不匹配检查中被忽略,因为不知道Object是用户输入还是默认值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |