Sorry for the too elemental question (don't know if this is the right place to make questions like this) I just have started with ruby, and don't understand the difference "::" "." I have read that :: is for accessing constants, but then I see, that, for example, I can make a new object like with ::new or .new. Could anyone explain that?
There is some overlap, but in general usage, use :: to access names
that are scoped within modules and use . to send messages (call)
methods.
At least while you are getting started, this is the easiest thing to remember.
pth
···
On 11/12/06, Alfonso <euoar@yahoo.es> wrote:
Sorry for the too elemental question (don't know if this is the right
place to make questions like this) I just have started with ruby, and
don't understand the difference "::" "." I have read that :: is for
accessing constants, but then I see, that, for example, I can make a new
object like with ::new or .new. Could anyone explain that?
Sorry for the too elemental question (don't know if this is the right
place to make questions like this) I just have started with ruby, and
don't understand the difference "::" "." I have read that :: is for
accessing constants, but then I see, that, for example, I can make a new
object like with ::new or .new. Could anyone explain that?
There is some overlap, but in general usage, use :: to access names
that are scoped within modules and use . to send messages (call)
methods.
To be precise, :: and . are completely equivalent operators to call
methods of an object. I think (not really sure) that an older version of
Ruby only let you use :: for class methods, but that's no longer the case.
Only :: can be used for constant lookup; it's idiomatic to use . for any
method calls, as Patrick says.
Thank you very much for your answers. So if I have understood right:
- "::" constants, and module methods
- "." methods
I also have read today in "ruby in a nutshell", that "::" is preferred also with class methods (but the war wroten in 2001, so it could be a bit outdated).
Thank you very much for your answers. So if I have understood right:
- "::" constants, and module methods
- "." methods
I also have read today in "ruby in a nutshell", that "::" is preferred also with class methods (but the war wroten in 2001, so it could be a bit outdated).
My recommendation is:
"::" for constant paths
"." for method calls
I don't think there's any reason to use :: for method calls just
because the receiver is a class or module. It just adds an
unnecessary special case.