ara.t.howard / noaa.gov wrote:
> On Fri, 3 Mar 2006, Berger, Daniel wrote:
> 
>>>> # Method definition, '=' means assignment (of default value): def
>>>> foo(bar, baz = 3)
>>>>   ...
>>>> end
>>>>
>>>> # Method call, '=' means keyword
>>>> foo(baz = 5, bar = 2)
>>>
>>>
>>> but is
>>>
>>>    foo baz = 5, bar = 2
>>>
>>>    a, b = foo(baz = 5), (bar = 2)
>>>
>>> or
>>>
>>>    a = foo(  (baz = 5), (bar = 2)  )
>>>
>>> ??
>>
>>
>> Second one.
> 
> 
> but that's a problem no?  number two is the same as this
> 
>   baz = 5
>   bar = 2
>   a = foo baz, bar

No, then they become positional.  That's the same as foo 2, 5.

> see, when on writes
> 
>   foo baz = 5, bar = 2
> 
> it's ambiguous if those assignments are part of a method call or not.  bar
> escpecitally, it could easily be considered an assignment statement (bar=2)
> that's part of a parrallel assignment statement.
> 
> or am i missing something?

The parser just has to be trained well enough. :)

That being said, perhaps using '=' as a keyword operator would just cause too 
much confusion amongst the Ruby community.  I know some people hate changing 
behavior based on context.

Regards,

Dan