这是一个延续这种原始的SO问题:Using "::" instead of "module ..." for Ruby namespacing红宝石 - 词法范围VS继承
在原来的SO问题,这里是介绍我还在唔明场景:
FOO = 123
module Foo
FOO = 555
end
module Foo
class Bar
def baz
puts FOO
end
end
end
class Foo::Bar
def glorf
puts FOO
end
end
puts Foo::Bar.new.baz # -> 555
puts Foo::Bar.new.glorf # -> 123
有人可以提供一些解释,为什么第一个电话返回555,为什么第二个电话返回123?
威尔森,你觉得是值得的赏金其回答以下?谢谢 – rainkinz 2013-03-07 21:37:40
提示:在你的代码中添加两个“puts Module.nesting”。 另请参阅:http://coderrr.wordpress.com/2008/03/11/constant-name-resolution-in-ruby/ – 2013-03-08 15:22:14