我正在努力了解以下内容会产生什么。根据{{3}},此代码将返回A1。
IRHG说:常数是在课外搜索。如果没有找到 在外面,然后在课堂内搜索。
但我在Ruby 1.8.7中得到以下消息
未初始化的常量A3 :: B3 :: C3 :: Const(NameError)
请您帮我理解一下吗?
class A1
Const = "A1"
end
class A2 < A1
end
class A3 < A2
#Const = "A3"
class B1
end
class B2 < B1
end
class B3 < B2
class C1
end
class C2 < C1
end
class C3 < C2
p Const
end
end
end
答案 0 :(得分:1)
在你的情况下,C3类不是从A3类继承的。 A3类只是C3的命名空间。
A3::B3::C3.superclass
#=> A3::B3::C2
A3::B3::C3.superclass.superclass
#=> A3::B3::C1
A3::B3::C3.superclass.superclass.superclass
#=> Object
# or you can look A3::B3::C3.ancestors for full map
虽然
A3.superclass
#=> A2
A2.superclass
#=> A1
因此,当您将一个类放入另一个类时,您不会继承,而是嵌套类