クラス変数によるインスタンスの識別
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