From: James Britt Date: 2006-05-21T13:34:38+09:00 Subject: Re: Class variables and class instance variables in Pickaxe 2nd uncutstone wu wrote: > These are two concepts in Pickaxe 2nd edtion. > > Class Variables example is in chapter 3: > > class Song > @@plays = 0 > def play > @@plays += 1 > end > end Note that the class variable is being used here by an instance method. > > Class instance variables example is in chapter 24: > > class Test > @cls_var = 123 > def Test.inc > @cls_var += 1 > end > end And note that the class instance variable is being used here by a class method. A class is also an object; it's an instance of Class. Since it is an object it may have its own instance variables. Class variables are available to the class and to instances of that class; class instance variables are only visible to the class itself (not to instances of that class). (Yeah, it can be confusing at first.) class Foo @@cls_var = 123 @cls_instvar = 'abc' def test p @@cls_var p @cls_instvar end def self.test p @@cls_var p @cls_instvar end end puts( "Foo is a #{Foo.class}") f = Foo.new f.test Foo.test -- James Britt http://www.ruby-doc.org - Ruby Help & Documentation http://www.artima.com/rubycs/ - The Journal By & For Rubyists http://www.rubystuff.com - The Ruby Store for Ruby Stuff http://www.jamesbritt.com - Playing with Better Toys http://www.30secondrule.com - Building Better Tools