From: Christian Neukirchen Date: 2005-05-20T00:36:12+09:00 Subject: Re: syntax sugar: treating an object like a method Eric Mahurin writes: > And one more thing. If someone has both a local variable f and > a method f, we have different behavior in 1.8.2 vs. 1.9: > > f = lambda {|*args|puts("lambda",*args)} > def f(*args);puts("method",*args);end > f(1,2,3) > > 1.8.2 calls the method and 1.9 calls the lambda. This seems > bad. So it looks like the priority between local variables and > methods has been reversed - 1.8.2 prefers methods and 1.9 > prefers local variables. You can no longer use "()" to > distinguish the two. Maybe is does make sense because they are > in the same namespace and local usually overrides, but people > need to be aware. Wasn't that just what you wanted? Remember that Ruby 1.8 cannot call lambdas directly. If one decides to call #call magically (which I'm quite opposed to), local variables should have preferrence, I think. Finally, () only defines evaluation order/parameters, there is no way (and there shouldn't be, IMO) a method will behave differently when called with or without parentheses. -- Christian Neukirchen http://chneukirchen.org