【发布时间】:2013-02-13 17:03:20
【问题描述】:
这是原始 SO 问题的延续:Using "::" instead of "module ..." for Ruby namespacing
在最初的 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?
【问题讨论】:
-
Willson,您认为下面哪个答案值得赏金?谢谢
-
提示:在代码中的两个 put 之后添加“puts Module.nesting”。另请参阅:coderrr.wordpress.com/2008/03/11/…
标签: ruby inheritance lexical-scope