From: Martin Boese Date: 2007-03-03T22:08:43+09:00 Subject: Re: Question about attr_accessor Change your add method to: > def add > @bar+=1 > end If you use just 'bar' it will think of a local variable which is not defined. martin On Saturday 03 March 2007 13:00, Roland Swingler wrote: > Hi, > > I came across something unexpected today, and wondered if anyone could > explain it to me. If I have this class: > > class Foo > def initialize > @bar = 0 > end > > attr_accessor :bar > > def add > bar += 1 > end > end > > then the "add" function doesn't work - it complains about a nil > object. You have to specifically put "self.bar += 1". Why is that - I > thought that the "self" was implicitly there? > > Doing: > > f = Foo.new > f.add > > works as the class stands, so you only seem to need the self if you > are calling the accessor from within your class. > > Confused... > > TIA > Roland