From: Lauren Buckland Date: 2011-02-05T15:03:01+09:00 Subject: Re: variables and scope You are getting a -1 because you are using local variables. Thus, the n within your def is not the same as the n within your class. Since you declared n to be -1 in your def, that is what your program responded with, a -1. You need to initialize an instance variable that will be available throughout the class. You can also make your code more utilitarian with a parameter value that can be changed any time you create a new instance. Try the following: class Test def initialize(n) @n = n end def pt puts "hi there" @n -= 1 end end t = Test.new(100) puts t.pt This way, you are not tied down to the value 100, but can use any value you want. I am new at this game and just taking the baby steps, but this seemed to work. Lauren On Feb 5, 2011, at 12:15 AM, Stu wrote: > take note of the usage of @ for scope as well as the special > initialize method used as a constructor for the object. > > also note note you common bug/mistake. Your where setting n to > negative one. you need to use n = n + -1 or shorthand version below is > n += -1 > > class Test > def initialize > @n = 100 > end > > def pt > p "hi there" > @n += -1 > end > end > > t = Test.new > puts t.pt > > If you would like to know more have a look at attr_* in ruby > > Good luck with your classes > > ~Stu > > > On Fri, Feb 4, 2011 at 10:17 PM, Mike 1. wrote: >> Hi all, >> >> I would be asking my instructor this question be she is not available >> on >> the weekends... >> >> How do I make "n" available from anywhere inside the class? I need to >> keep the values in n from call to call. >> >> When calling the method "pt", "n" acts as if it was not declared above. >> >> I get -1 instead of what I wish for ... 99. >> >> Thanks in advance, >> >> Mike >> >> class Test >> n=100 >> >> def pt >> puts "hi there" >> n=-1 >> end >> >> end >> >> t = Test.new >> puts t.pt >> >> -- >> Posted via http://www.ruby-forum.com/. >> >> >