Syntax sugar: treating an object like a method

To a large extent, my reaction to all of these examples

comes
>> down, as
>> it often does, to the question: how would I explain this
to
>> someone to
>> whom I was teaching Ruby (in person or in writing)? I
think
>> I would
>> find it quite difficult to explain that in this:
>>
>> s = "hi"
>> t = s
>> (s) = "bye"
>
> I think this is a good example to show the difference.
> Programmers need to understand the difference shown above.
One
> assigns to a variable and one assigns into an object that a
> variable has. Both are normal things you would want to do
and
> both are assignment-like.

There's no checklist of "normal things" in this context.
Programming
languages are allowed to be designed differently :slight_smile:

In Ruby's object/reference (variable) model, changing the
object via
assignment is *not* normal, and not something I would want to
do.
Assignment is to variables, and variables hold references to
objects
(or, in some exceptional cases like Fixnums, they are
immediate
values).

> Why do some of you think that everything I suggest has to
do
> with references?

I don't think that of everything you suggest, but in this
case:

   s = "hi"
   (s) = "bye" # changing the object to which s is a
reference

it seems to be clearly a way of adding that extra level of
remove.

It does have the indirection, but it accomplishes almost
nothing that references would. It is just a synonym of
"replace" (if we made this '=' method 'replace').

This half of the proposal is kind-of an extension of RCR 307 -
giving more symmetry between what's allowed on the LHS and RHS
of an assign.

But, nobody like this half of the idea, so I'll drop that part.
The other half - ()/null/default operator (on the RHS) seems
to have more support. It looks like Ruby is at least getting
it for procs/lambda and python has it (__call__).

ยทยทยท

__________________________________
Yahoo! Mail Mobile
Take Yahoo! Mail with you! Check email on your mobile phone.
http://mobile.yahoo.com/learn/mail