Ruby - 如何删除对象上的 setter
给定一个这样的类:
class B
class << self
attr_accessor :var
end
end
假设我无法修改类 B 的原始源代码。我该如何删除类变量 var 上的 setter?我尝试过使用类似 B.send("unset_method", "var=") 的方法,但这不起作用(remove_method 也不起作用,或者用不执行任何操作的 var= 方法覆盖该方法)。有什么想法吗?
Given a class like this:
class B
class << self
attr_accessor :var
end
end
Suppose I can't modify the original source code of class B. How might I go about removing the setter on the class variable var? I've tried using something like B.send("unset_method", "var="), but that doesn't work (nor does remove_method, or overwriting that method with a var= method that doesn't do anything). Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试:
您可能想使用remove_method来代替:
要查看差异,请转到:
http://www.nach-vorne.de/2008/2 /28/undef_method-remove_method/
Try:
You may want to use remove_method instead:
To see the differences, go to:
http://www.nach-vorne.de/2008/2/28/undef_method-remove_method/