From: "toulax@..." Date: 2007-02-16T21:15:15+09:00 Subject: Re: Ruby Syntax - One::Two On Feb 16, 8:26 am, Stefano Crocco wrote: > Alle venerd� 16 febbraio 2007, tou...@gmail.com ha scritto: > > > > > I'm a newcomer to ruby and there's this little something I don't > > really understand: > > > class One::Two > > ... > > end > > > Class One::Three > > ... > > end > > > On this example, what does "::" mean? If understand correctly it's > > just sort of a naming convention to imply that both the Two and Three > > classes belong to the same "group", as in Net::HTTP and Net::FTP. > > So, in essence Two and Three are completely unrelated, and I'd not > > even need to have a class named One for it to work, is that right? > > > If not, please tell me, what exactly is the purpose of "::" on class > > names? > > > Thanks > > :: is the scope operator. It is used to access constants defined in a class or > module. Since classes are constants, when you write class One::Two, you're > defining the class Two inside One (where One can be a class or a module). If > you didn't define One, the code class One::Two will give you a NameError, > telling you that the constant One is not initialized: > > >> class One::Two > >> end > > NameError: uninitialized constant One > from (irb):1 > > > > Another example of the use of :: is > > puts Math::PI, which prints the value of the PI constant > > >> puts Math::PI > > 3.14159265358979 > > Since PI belongs to the Math module, I couldn't have written puts PI. In fact, > this raises an exception: > > >> puts PI > > NameError: uninitialized constant PI > from (irb):5 > > I hope this helps. > > Stefano I understand now, I didn't realize "class One::Two" actually defined the constant Two inside One. Thank you!