Ruby 如何复写 File.delete

DarkSpy · 2020年11月27日 · 最后由 DarkSpy 回复于 2020年11月29日 · 390 次阅读
class File
    def delete(*f)
         if FileTest::exist?(f)
             super(f)
         else
             puts "#{f} not exists"
         end
  end
end

为何 File.delete(xxx) 无法调用到 delete?

你是想用 super 调用超类的 delete?

但是超类是 Object,没有 delete 方法

  1. delete 是类方法
  2. 不建议修改原有方法

module Xx
  def delete
  end
end

File.singleton_class.prepend Xx

spike76 回复

那咋整,有啥好办法么

需要 登录 后方可回复, 如果你还没有账号请 注册新账号