Hi -- On Tue, 10 Jun 2008, progcat / comcast.net wrote: > I am still learning Ruby and I am trying to get something > like this to work and am unsure how. You don't have any class variables in your example, only instance variables. Class variables look like this: @@var, and in most cases aren't what you want to use anyway. > I know I could do attr_reader to access "ones" but ones might be an > array, hash, etc. > > Is there a way to do something like this: > class Test > def initialize > @try["hashworld"] = 10000 @try is nil at this point; you can't index it. > @ones = 1,2,3,4 > end > def addit(one,two) > #can code add one + two, from > #inside and outside? > return(one + two) > end > end > tens = 10,20,30,40,50 > a = Test.new You'll get a fatal error at this point if you run this code. > p a.addit(ones[1],tens[0]) #prints 12 > p a.addit(tens[3],ones[0]) #prints 41 > p a.addit(tens[3],try["hashworld"]) #prints 10040 You haven't defined try. (It has no connection to the @try inside the Test#initialize method, which you also haven't defined.) I'm not sure exactly what you want to do but I think you're overthinking it. Basically, instance variables (like @try) are visible only to the object that owns them. If that object wants to expose them to other objects, it has to provide methods for that purpose. attr_reader is a macro that writes such a method for you, such that this: attr_reader :ones is the same as this: def ones @ones end but shorter. David -- Rails training from David A. Black and Ruby Power and Light: INTRO TO RAILS June 9-12 Berlin ADVANCING WITH RAILS June 16-19 Berlin ADVANCING WITH RAILS July 21-24 Edison, NJ See http://www.rubypal.com for details and updates!