On 11 Feb 2003 at 11:13, Sean Chittenden wrote:

> (snip)
> 
> f = Foo.new()
> i = f.a = 42   # i == 42
> i = f.b = 42   # i == 42 (now it's 42, but should be 28)
> 
> b=() modifies the return value.  Is that what's inconsistent?  That
> the return value is different than argument?  Not to quote Dave, but
> this seems a little too "mother knows best" given that the default
> does return 42 and the only time it isn't 42 is when the author meant
> for it to be something other than 42.  Is it a consistency issue for
> people who don't use return()?  If that's the case, then that's just
> sloppy/poor programing practices and something that I'd love to see
> prevented when -w is thrown on.

When reading code I read the assignment operator as an assignment. 
After

  obj.attr = value

I expect that

  obj.attr == value

and the return value of

  obj.attr = value

to be the same as

  obj.attr (after the assignment)

so the new behavior just feels right. I think you should use other 
method names if the methods don't adhere to these semantics. All the 
code examples that were broken by the new behavior were hard for me 
to read.

Regards,
Pit