From: Rick DeNatale Date: 2007-03-02T06:15:37+09:00 Subject: Re: Newbie Question On 3/1/07, james.d.masters@gmail.com wrote: > On Mar 1, 11:35 am, Gary Wright wrote: > > ... > > I think you are asking for something which is quite easy: > > > > class A > > class < > attr_accessor :per_class > > end > > end > > ... > > Yes, this is kind of what I'm referring to; however, my gripe is that > this is somewhat esoteric. The beauty of other parts of Ruby is that > the code is terse and readable. Go back and look at my earlier post. Just what does @var mean? In a method it means that this is an instance variable of the object executing the method. rick@frodo:/public/rubyscripts$ cat civ.rb class C def instance_var @instance_var end def instance_var=(val) @instance_var = val end def C.class_instance_var @class_instance_var end def C.class_instance_var=(val) @class_instance_var = val end end class D < C end c = C.new c1 = C.new c.instance_var = 'c' c1.instance_var = 'c1' puts "c.instance_var=#{c.instance_var}" puts "c1.instance_var=#{c1.instance_var}" C.class_instance_var="C" puts "C.class_instance_var=#{C.class_instance_var}" puts "D.class_instance_var=#{D.class_instance_var}" D.class_instance_var="D" puts "C.class_instance_var=#{C.class_instance_var}" puts "D.class_instance_var=#{D.class_instance_var}" rick@frodo:/public/rubyscripts$ ruby civ.rb c.instance_var=c c1.instance_var=c1 C.class_instance_var=C D.class_instance_var= C.class_instance_var=C D.class_instance_var=D rick@frodo:/public/rubyscripts$ All a class instance variable is, is an instance variable of the class. so @class_inst_var is a class instance variable of C because it's in class methods of C. Gary's example looks a bit esoteric perhaps, but the attr_accessor method is just a metamethod which generates the two methods for each of my variables. My code could be replaced with the equivalent: class C attr_accessor :instance_var class << C # or class << self attr_accessor :class_instance_var end end class D < C end The class<