George Ogata
3/9/2006 11:57:00 PM
mental@rydia.net writes:
> Quoting eastcoastcoder@gmail.com:
>
>> If I'm in the middle of module A::B::C, and I want to reference a
>> class from A::B or from A::B::D, do I need to
>> do ::A::B::Classname (or ::A::B::D::Classname)?
>>
>> It seems a bit repititous to me. A module shouldn't need to know
>> it's ancestors all the way up - just what it needs to use.
>> Having to keep track couples modules to a tree and obstructs
>> refactoring.
>>
>> So, what say the veteran Rubyists?
>
> Try it!
>
> module A
> module B
> class Foo
> end
> module D
> class Bar
> end
> end
> end
> module C
> p B::Foo
> p B::D::Bar
> end
> end
It's also worth pointing out that:
class A::B::Foo
p C
end
is different to:
module A
module B
class Foo
p C
end
end
end
The latter may reference A::B::C or A::C, whereas the former cannot.