当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Object.DelegateClass用法及代码示例


本文简要介绍ruby语言中 Object.DelegateClass 的用法。

用法

DelegateClass(superclass, &block)

这个库的主要接口。用于在定义类时设置委托。

class MyClass < DelegateClass(ClassToDelegateTo) # Step 1
  def initialize
    super(obj_of_ClassToDelegateTo)              # Step 2
  end
end

或者:

MyClass = DelegateClass(ClassToDelegateTo) do    # Step 1
  def initialize
    super(obj_of_ClassToDelegateTo)              # Step 2
  end
end

这是 Tempfile 的一个使用示例,它实际上是一个 File 对象,有一些关于存储位置的特殊规则以及何时应该删除 File 。这为如何使用委托提供了一个几乎教科书般的完美示例。

class Tempfile < DelegateClass(File)
  # constant and class member data initialization...

  def initialize(basename, tmpdir=Dir::tmpdir)
    # build up file path/name in var tmpname...

    @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600)

    # ...

    super(@tmpfile)

    # below this point, all methods of File are supported...
  end

  # ...
end
调用超类方法

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Object.DelegateClass。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。