Hashの中にネストされた、という新しいクラスを作成しただけですC1。
Hash期待どおりにRubyのクラスにメソッドを追加しませんでした。class Hash必要に応じて、外側に移動してC1再実行します。コードは期待どおりに実行されます。
現在のコードがそうであるように、ネストされたクラスに。という名前を付けたと仮定しますMyThing。今、あなたは働く{}.ok?ために働かないでしょう?
要約すると:
これはうまくいくでしょう:
class Hash
def ok?
return 'non-nested hash ok'
end
end
class C1
def m1
return Hash.new.ok? #WORKS
end
def m2
return {}.ok? #WORKS
end
end
これは失敗します:
class C1
class MyThing
def ok?
return 'nested hash ok'
end
end
def m1
return MyThing.new.ok? #WORKS
end
def m2
return {}.ok? #FAILS
end
end