新手问题 Ruby 的类方法怎么进行动态删除

winse · 2017年04月19日 · 最后由 winse 回复于 2017年04月19日 · 1617 次阅读

我有一个 A 类

class A
  def a
    puts 'this is method a'
  end

  def self.b
    puts 'this is method b'
  end
end

我可以删除方法 a

a = A.send :remove_method, :a
A.new.methods(false)     # => []

然而我没有找到删除类方法的方式

class << A
 undef :b
end

类方法就是类对象的单例类的实例方法,所以同理 A.singleton_class.send :remove_method, :b

shinkxw 回复

哦哦,还有 我以为:remove_method 返回的是删除掉的方法,结果不是,我应该用哪个方法获得被删除的方法?

winse 回复

删除前使用 a = A.new.method(:a) 获取

shinkxw 回复

感谢😋

winse 关闭了讨论。 04月19日 14:07
需要 登录 后方可回复, 如果你还没有账号请 注册新账号