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

On 11/12/06, Alfonso [email protected] 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.

At least while you are getting started, this is the easiest thing to
remember.
pth

Patrick H. wrote:

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

Hi –

On Mon, 13 Nov 2006, Alfonso wrote:

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

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