gpt4 book ai didi

ruby - Ruby 类什么时候可以有多个父类(super class)

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:51 25 4
gpt4 key购买 nike

为什么下面这段代码会按我预期的那样运行?我的印象是一个类只能有一个父类(super class),并且在首次定义该类时放置原始父类(super class)以外的东西会引发类型不匹配异常。

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遗迹 Test即使在 class MyTest < Object 之后

我想是因为Object是默认值 superclass定义新类时。来自docs :

new(super_class=Object) → a_class

所以当Object给出为 superclass它在不匹配检查中被忽略,因为它不知道是否 Object是用户输入或默认值。

关于ruby - Ruby 类什么时候可以有多个父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com