Forum: Ruby Ruby Syntax - One::Two

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
(Guest)
on 2007-02-16 10:16
(Received via mailing list)
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
Stefano C. (Guest)
on 2007-02-16 12:27
(Received via mailing list)
Alle venerdì 16 febbraio 2007, removed_email_address@domain.invalid ha scritto:
>
> 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
(Guest)
on 2007-02-16 14:15
(Received via mailing list)
On Feb 16, 8:26 am, Stefano C. <removed_email_address@domain.invalid> wrote:
>
> > If not, please tell me, what exactly is the purpose of "::" on class
> >> class One::Two
>
>         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!
This topic is locked and can not be replied to.