BasicObject を継承すると、自身のクラス名を解決できないのはなぜ?
通常のクラスでは、自身のクラス名は、問題なく解決できます。
class Hoge
def new_my_class
Hoge.new
end
end
h = Hoge.new
p h.new_my_class
# => #<Hoge:0x000000032f6b58>
BasicObject を継承したクラスでは、これができないことがわかりました。
class HogeBasic < BasicObject
def new_my_class
HogeBasic.new
end
end
h = HogeBasic.new
p h.new_my_class
# # 以下の例外が発生する。
# NameError: uninitialized constant HogeBasic::HogeBasic
# Did you mean? HogeBasic
これは、なぜなのでしょうか?