hakeの日記

Windows環境でプログラミングの勉強をしています。

クラス変数によるインスタンスの識別

Rubyの勉強
クラス変数はそのクラスおよび継承したクラスで共有されるので、インスタンスを生成するごとにそのクラス変数の値をインスタンス変数にコピーしてから+1すれば、各インスタンスにユニークなidを持たせることができるので識別が可能になる。
継承したクラスでクラス変数に値を代入されたらダメだけど(^^ゞ

class Test
 @@id = 0
 attr_reader :id
 def initialize
   @id = @@id
   @@id += 1
 end
end

class Test1 < Test
end

a = Test.new
b = Test.new
p a.id         #=> 0
p b.id         #=> 1
a = Test1.new
p a.id         #=> 2

b = a
p b==a         #=> true
a = Test1.new
p b==a         #=> false