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