newby question

Discussion in 'Ruby' started by Alfonso, Nov 12, 2006.

  1. Alfonso

    Alfonso Guest

    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.
    Alfonso, Nov 12, 2006
    1. Advertisements

  2. There is some overlap, but in general usage, use :: to access names
    that are scoped within modules and use . to send messages (call)

    At least while you are getting started, this is the easiest thing to remember.
    Patrick Hurley, Nov 12, 2006
    1. Advertisements

  3. --------------enig3C92BCECC5B174C5752E94E5
    Content-Type: text/plain; charset=ISO-8859-1
    Content-Transfer-Encoding: quoted-printable

    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

    Content-Type: application/pgp-signature; name="signature.asc"
    Content-Description: OpenPGP digital signature
    Content-Disposition: attachment; filename="signature.asc"

    Version: GnuPG v1.4.5 (MingW32)

    -----END PGP SIGNATURE-----

    David Vallner, Nov 12, 2006
  4. Alfonso

    Alfonso Guest

    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.
    Alfonso, Nov 13, 2006
  5. Alfonso

    dblack Guest

    Hi --

    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 A. Black |
    Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3]
    DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4]
    [1] | [3]
    [2] | [4]
    dblack, Nov 13, 2006
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.