クラス変数の使い方
クラス変数とクラス定数
同一のクラスの複数のオブジェクトで、一つの変数を共有したいときがある。このような場合には、クラス変数を用いると良い。rubyでは、クラス変数は@@で始まる。
class Test
@@v=0
def initialize()
@@v+=1
end
def v
@@v
end
end
t1=Test::new
p t1.v
t2=Test::new
p t1.v
とすると、生成したオフジェクトの数が表示される。一方、クラス定数も複数のオフジェクトで共有できるが、メソッド中での代入はできない。しかし、
class Test
V=[]
def initialize()
V<<1
end
end
t1=Test::new
p Test::V
t2=Test::new
p Test::V
などとすると、変更は可能である。このあたりがどのようになっているのかよく理解できていない。当然のことだが、変更が必要な場合には、クラス変数を用いると良いのだろう。