Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library delegate
library delegate
要約
メソッドの委譲 (delegation) を行うためのライブラリです。
Delegator クラスは指定したオブジェクトにメソッドの実行を委譲します。 Delegator クラスを利用する場合はこれを継承して Delegator#__getobj__ メソッドを再定義して委譲先のオブジェクトを指定します。
SimpleDelegator は Delegator の利用例の一つであり、 コンストラクタに渡されたオブジェクトにメソッドの実行を委譲します。
Kernel#DelegateClass は 引数で渡されたクラスのインスタンスをひとつとり、 そのオブジェクトにインスタンスメソッドを委譲するクラスを定義して返します。
参考
- Rubyist Magazine - 標準添付ライブラリ紹介【第 6 回】委譲 http://jp.rubyist.net/magazine/?0012-BundledLibraries
クラスとモジュール
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]