Martin Boese
3/3/2007 1:09:00 PM
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