Ruby - 如何删除对象上的setter

时间:2010-03-22 17:05:39

标签: ruby metaprogramming setter remove-method

鉴于这样的课程:

class B
    class << self
        attr_accessor :var
    end
end

假设我无法修改类B的原始源代码。我怎么能去除类变量var上的setter?我尝试过使用类似B.send(“unset_method”,“var =”)之类的东西,但这不起作用(remove_method也没有,或者用var =方法覆盖那个方法,不做任何事情)。有什么想法吗?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

class <<B ; remove_method :var= ; end