次のコードをオブジェクトに追加すると、任意のオブジェクトのシングルトン クラスを取得できるようになります。
class Object
def singleton_class
class << self; self; end
end
end
この方法でインスタンス化したPowerballクラスがありました
puts Powerball.new.singleton_class
puts Powerball.new.singleton_class
puts Powerball.singleton_class
puts Powerball.singleton_class
それは私にこの出力を与えました
#<Class:#<Powerball:0x007fd333040548>>
#<Class:#<Powerball:0x007fd333040408>>
#<Class:Powerball>
#<Class:Powerball>
そのため、powerball クラスの 2 つのインスタンスには一意の ID がありますが、クラスで直接 singleton_class を呼び出してもオブジェクト ID は生成されません。
質問
各インスタンスにはシングルトン クラスがあるため、ID は一意ですか?
self
クラス内ではクラス、つまり Class:Powerball が返されることは理解していますが、クラスはオブジェクトであるため、id も持つべきではありませんか? そのIDにアクセスする方法はありますか?