On 9/20/06, Henrik Schmidt <nospam / a.b.c.d> wrote:
> Hi there,
>
> I'm fairly new to Ruby, so bear with me. Anyway, on with the question.
>
> What is the benefit of being able to omit parentheses on a method call?
> IMHO, parentheses improves readability; I can instantly discern, whether
> something is a method call or a variable. It would seem to me, that
> readability is, at least, part of the reason for the @-prefix on
> instance variables, thus making it difficult for a human reader to
> confuse them with local variables. Why not force a similar convention on
> method calls, namely explicit parentheses?
>
> In addition, this feature allows you to do stuff like this:
>
> def foo
>    42
> end
>
> foo            # -> 42
> foo = 1 if false
> foo            # -> nil
>
> I generally like the language but dead code with side effects makes me
> nervous.
>
> Could anyone explain to me, why it's a good idea to have the option of
> omitting parentheses on a method call?

It allows for nice DSL, c.f Rails':

class Book < ActiveRecord::Base
  has_many :pages
  belongs_to :library
end

or, recall the attr_reader:

class Whatever
  attr_reader :attr1
end

With mandatory parentheses this would be:
class Whatever
  attr_reader(:attr1)
end