📌
Ruby でクラスオブジェクトを #clone, #dup するとどうなる?
それはそう、っていう内容ですが考えたことがなかったので覚書。
#clone や #dup はレシーバのオブジェクトをコピーするメソッドです。
なので『違うオブジェクト』として生成されます。
obj = "homu"
obj2 = obj.clone
p obj.__id__ # => 16
p obj2.__id__ # => 24
このときにレシーバがクラスオブジェクトの場合は『名前がないクラスオブジェクト』として生成されます。
new_class = Integer.clone
# 名前がないオブジェクトとして生成される
pp new_class # => #<Class:0x00007e19d1ca2588>
pp new_class.name # => nil
それはそう、なんですがあんまりイメージできてなかったので覚書。
Discussion