From: Evan Webb Date: 2005-05-17T01:54:31+09:00 Subject: Re: Problems with the "outer scope" operator People (myself included) put :: at the beginning to be absolutely sure that the class they wanted at the time they wrote the code was the class they got at the time the code was evaluated. When you have a complex class system (like SOAP), you can never be too careful. As to your 2nd question, there is no difference between the lookup of inner elements of classes or modules. On 5/16/05, Lothar Scholz wrote: > Hello Martin, > > MH> not sure if I entirely understand what you mean, but consider this: > > MH> class Outer > MH> end > > MH> class Inner > MH> class Outer > MH> end > > MH> class Child1 < Outer > MH> end > > MH> class Child2 < ::Outer > MH> end > MH> end > > MH> Without the leading '::', Child2 would derive from Inner::Outer and not ::Outer. > > Okay thats a good example that i understand. > But why does somebody write > > module SOAP > module RPC > class SOAPlet > class RequestRouter < ::SOAP::RPC::Router > end > end > end > end > > As soon as "::" is found inside the superclass doesn't this > automatically mean we start the lookup inside the toplevel scope ? > > Or would a "class RequestRouter < SOAP::RPC::Router" declaration really > look for the following classes and and takes the first it finds in > this order: > > SAOP::RPC::SOAPlet::SOAP::RPC::Router > SAOP::RPC::SOAP::RPC::Router > SAOP::SOAP::RPC::Router > SOAP::RPC::Router > > And this raises one more question for me. Is there any differences in > the lookup mechanism between nesting inside a module or a class ? > > Sorry for the line noise, i posted this by accident to the core > mailing list and not to the ruby-user list. And i hope someday we have a > written (english !) formal language definition where i can find all > the answers. > > -- > Best regards, emailto: scholz at scriptolutions dot com > Lothar Scholz http://www.ruby-ide.com > CTO Scriptolutions Ruby, PHP, Python IDE 's > >