當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。