Jest to kontynuacja ta oryginalna SO pytanie: Using "::" instead of "module ..." for Ruby namespacingRuby - leksykalna zakres vs dziedziczenia
W pierwotnym SO pytanie, tutaj jest scenariusz przedstawiony które ciągle mam problemy ze zrozumieniem:
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
Czy ktoś może podać jakieś wyjaśnienie, dlaczego pierwsze połączenie zwraca 555 i dlaczego drugie połączenie zwraca 123?
Willson, co odpowiedzieć poniżej myślisz jest godna laska? Dzięki – rainkinz
Podpowiedź: dodaj "puts Module.nesting" po dwóch umieszczonych w twoim kodzie. Zobacz także: http://coderrr.wordpress.com/2008/03/11/constant-name-resolution-in-ruby/ –