给出这段代码:
class Foo
def bar
return Bar.new
end
end
class Bar
...
end
我收到此错误:
NameError: uninitialized constant Bar
如果我把Bar放在Foo之前,这显然有效,但这不是一个真正的解决方案。
有关如何在不考虑订单的情况下解决此问题的任何想法?
非常感谢。
更新
当然,只有在调用Foo.new.bar
而不是在定义时才会发生错误。
答案 0 :(得分:3)
安装Ruby时一定有问题。它不应该给出错误消息。我检查了ISO Ruby规范和RubySpec,我也复制了&粘贴你发布到JRuby 1.6.0.dev,JRuby 1.5.0RC3,IronRuby 1.0,YARV 1.9.1-p378,MRI 1.8.7-p249,Rubinius 0.11.0-dev,YARV-1.9.1-p129的代码, MRI 1.8.7-p174,MRI 1.8.6-p369,MRI 1.7.1,MRI 1.6.0,MRI 1.5.0,MRI 1.4.0,MRI 1.3,MRI 1.2甚至MRI 1.0(一路回到1997)我没有得到那个错误:
class Foo
def bar
return Bar.new
end
end
class Bar
end
puts Foo.new.bar # => #<Bar:0x823f638>