Newby question

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?

Thank you very much.

···

______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com

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?

Patrick Hurley wrote:

···

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?

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.

David Vallner

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).

···

______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com

Hi --

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.

David

···

On Mon, 13 Nov 2006, Alfonso wrote:

--
                   David A. Black | dblack@rubypal.com
Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3]
DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4]
[1] Ruby for Rails | [3] http://www.rubypowerandlight.com
[2] http://dablog.rubypal.com | [4] http://www.rubycentral.org