From: Eliah Hecht Date: 2005-03-01T09:04:37+09:00 Subject: Re: aliasing variables I know why it doesn't work, I just want to know how to make it work (if it's doable without making a wrapper object). On Tue, 1 Mar 2005 08:57:41 +0900, Hal Fulton wrote: > Eliah Hecht wrote: > > Is there a way to do something like > > a = 1 > > alias(b,a) > > a += 1 > > where the desired effect is that now b == 2? > > > > It's impossible in the general case, because > a+=1 literally means a=a+1 (in other words, > it creates a new object and assigns that to > a). > > Fixnums are not mutable at all. But if an > object is mutable, and an operator modifies > the object rather than creating a new one, > the behavior you want will happen: > > a = "cat" > b = a > a << "hode" > puts b # cathode > > However, assignment never keeps the same > object: > > a = "cat" > b = a > a += "hode" > puts b # cat > > In short: Assignment works on variables, not > objects; but methods are called on objects, > not variables. > > Make sense? > > > Hal > >