From: Daniel Berger Date: 2006-03-03T01:22:45+09:00 Subject: Re: Confusion Over Keyword Arguments 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