Rubyは、クラスとそのインスタンスを内部的にどのように区別しMyClassますobjか?MyClassのインスタンスの作成を許可するが、のインスタンスの作成を許可しないようにするにはどうすればよいobjですか?
MyClass = Class.new
obj = MyClass.new
Rubyは、クラスとそのインスタンスを内部的にどのように区別しMyClassますobjか?MyClassのインスタンスの作成を許可するが、のインスタンスの作成を許可しないようにするにはどうすればよいobjですか?
MyClass = Class.new
obj = MyClass.new
区別しません。MyClassはClass(のインスタンスと同じように)objのインスタンスであり、メソッドMyClassを実装しますが、実装しません。これは非常に単純です。ここでは特に特別なことは何も起こらず、他の方法とほとんど同じです。newObjectClass#new
ここで、各オブジェクトのクラスの祖先を確認できます。
MyClass = Class.new
obj = MyClass.new
MyClass.class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]
obj.class.ancestors #=> [MyClass, Object, Kernel, BasicObject]