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
を実装しますが、実装しません。これは非常に単純です。ここでは特に特別なことは何も起こらず、他の方法とほとんど同じです。new
Object
Class#new
ここで、各オブジェクトのクラスの祖先を確認できます。
MyClass = Class.new
obj = MyClass.new
MyClass.class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]
obj.class.ancestors #=> [MyClass, Object, Kernel, BasicObject]