加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

什么时候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是用户输入还是默认值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读