class Delegator

此库提供了三种将方法调用委托给对象的方式。最容易使用的是 SimpleDelegator。将一个对象传递给构造函数,对象支持的所有方法都将被委托。这个对象之后可以被更改。

进一步来说,顶层 DelegateClass 方法允许你通过类继承轻松地设置委托。这更加灵活,因此可能是此库最常见的用法。

最后,如果你需要完全控制委托方案,你可以继承抽象类 Delegator 并根据需要进行自定义。(如果你发现自己需要这种控制,可以看看标准库中的 Forwardable。它可能更适合你的需求。)

SimpleDelegator 的实现是 Delegator 使用的一个很好的例子

require 'delegate'

class SimpleDelegator < Delegator
  def __getobj__
    @delegate_sd_obj # return object we are delegating to, required
  end

  def __setobj__(obj)
    @delegate_sd_obj = obj # change delegation object,
                           # a feature we're providing
  end
end

备注

请注意,RDoc 将无法检测到委托的方法。