gpt4 book ai didi

ruby - 为什么在尝试引用 Ruby 中的嵌套类时会出错?

转载 作者:行者123 更新时间:2023-12-04 16:52:07 24 4
gpt4 key购买 nike

为什么下面的例子会出错?

class ClassA
class ClassB
end
class ClassC
def test
ClassB.new
end
end
end

p ClassA::ClassC.new.test # => #<ClassA::ClassB:0x0000010103f860>

class ClassA
class ClassD
def test
ClassB.new
end
end
end

p ClassA::ClassD.new.test # => #<ClassA::ClassB:0x0000010103f010>

class ClassA::ClassE
def test
ClassB.new
end
end

p ClassA::ClassE.new.test # => NameError: uninitialized constant ClassA::ClassE::ClassB

是否有另一种创建方式 ClassE , 而不是通过键入 class ClassA; class ClassE ?

最佳答案

嗯,是的,如果你定义你的测试方法返回 ClassA::ClassB.new :-)

你也可以玩玩const_missing以便它调用 ClassA.const_get .

否则 ClassB不在当前范围内,此时只有 ClassA::ClassEObject .第一次打开时ClassA ,然后 ClassE , 查找 ClassB首先在 ClassA::ClassE 中完成,然后在 ClassA (找到它的地方)并且还会查看 Object .

关于ruby - 为什么在尝试引用 Ruby 中的嵌套类时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3312665/

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