2013-03-07 47 views
0

如果我想要的是添加方法「好嗎?」轉換爲散列,但只適用於C1類,它是子類。如何做到這一點? 例如只爲類及其子類添加哈希方法

class C1 
class Hash 
    def ok? 
     return 'nested hash ok' 
    end 
    end 
def m1 
    return Hash.new.ok? #works 
end 
def m2 
    return {}.ok? #not works 
end 
end 


<<In other file>> 
class C2 < C1 
def m1_1 
    return {}.ok? #not works 
end 
end 

如何添加'{} .ok?'只是在C1 &它無需在每個文件所需的模塊子類的C2,但像inhirt

回答

0

這並不是一個新的方法添加到::Hash

class C1 
    class Hash 
    def ok? 
     return 'nested hash ok' 
    end 
    end 
end 

一些路它創建了一個新的類C1::Hash這與Hash無關。如果你想猴補丁::Hash但不能在全球範圍內,看看這個: http://yehudakatz.com/2010/11/30/ruby-2-0-refinements-in-practice/

然而,這僅僅是紅寶石2.0.0可用。