Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library delegate

library delegate

要約

メソッドの委譲 (delegation) を行うためのライブラリです。

Delegator クラスは指定したオブジェクトにメソッドの実行を委譲します。 Delegator クラスを利用する場合はこれを継承して Delegator#__getobj__ メソッドを再定義して委譲先のオブジェクトを指定します。

SimpleDelegatorDelegator の利用例の一つであり、 コンストラクタに渡されたオブジェクトにメソッドの実行を委譲します。

Kernel#DelegateClass は 引数で渡されたクラスのインスタンスをひとつとり、 そのオブジェクトにインスタンスメソッドを委譲するクラスを定義して返します。

参考

クラスとモジュール

class Delegator

サブクラスにメソッド委譲の仕組みを提供する抽象クラス。

module Delegator::MethodDelegation

委譲先のオブジェクト管理のためのメソッドを集めたモジュールです。

class SimpleDelegator

Delegator クラスを継承し、シンプルなメソッド委譲を実現した具象クラス。

追加・再定義されるメソッド

Kernel#DelegateClass(superclass) -> object [added by delegate]

クラス superclass のインスタンスへメソッドを委譲するクラスを定義し、 そのクラスを返します。

[PARAM] superclass:
委譲先となるクラス

例:

require 'delegate'

class ExtArray < DelegateClass(Array)
  def initialize
    super([])
  end
end
a = ExtArray.new
p a.class   # => ExtArray
a.push 25
p a         # => [25]

Classes

Sublibraries