From: Leslie Viljoen Date: 2006-07-26T04:05:50+09:00 Subject: Re: method self.a= and a= create different instance variables On 7/25/06, dblack@wobblini.net wrote: > Hi -- > > On Wed, 26 Jul 2006, yuesefa wrote: > > > i try this in irb . > > > > irb(main):001:0> def a=(a) > > irb(main):002:1> @a=a > > irb(main):003:1> end > > => nil > > irb(main):004:0> def a > > irb(main):005:1> @a > > irb(main):006:1> end > > => nil > > irb(main):007:0> a=1 > > => 1 > > irb(main):008:0> a > > => 1 > > irb(main):009:0> self.a=2 > > => 2 > > irb(main):010:0> a > > => 1 > > irb(main):011:0> self.a > > => 2 > > > > a and a= should be private methods of Object. so call of a or self.a > > should do the same thing. but it's not. i am now confused. > > When you write: > > a = 1 > > Ruby parses that as a local variable assignment. In other words, > methods ending in = always require that you provide an explicit > receiver (in this case "self"). also, @a will give you the same as self.a which makes sense because you are "inside" the definition of Object: irb(main):085:0> self => # Les