2010-03-22 30 views
0

在二傳手:紅寶石 - 如何刪除鑑於一類這樣的對象

class B 
    class << self 
     attr_accessor :var 
    end 
end 

想我不能修改B類的原始源代碼我怎麼可能去上去除的setter類變量var?我嘗試過使用類似B.send(「unset_method」,「var =」)的東西,但這不起作用(也不會執行remove_method,或者用var =方法覆蓋該方法,但不會執行任何操作)。有任何想法嗎?

回答

0
class <<B ; remove_method :var= ; end 
+0

真棒!我忘了做這樣的事情! – 2010-03-22 17:25:47

1

嘗試:

class B 
    class << self 
    undef var= 
    end 
end 

您可能要remove_method改用:

class B 
    class << self 
    remove_method :var= 
    end 
end 

要查看的差異,請訪問: http://www.nach-vorne.de/2008/2/28/undef_method-remove_method/

+0

這會導致錯誤 NameError:method'var ='not defined in Class – 2013-07-30 20:12:02