Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > delegateライブラリ > SimpleDelegatorクラス

class SimpleDelegator + Delegator

クラスの継承リスト: SimpleDelegator < Delegator < Object < Kernel < BasicObject

要約

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

委譲先に指定されたオブジェクトへメソッドの実行を委譲します。

例:

require 'delegate'

foo = Object.new
def foo.test
  p 25
end
foo2 = SimpleDelegator.new(foo)
foo2.test   # => 25

特異メソッド

new(obj) -> object

メソッドを委譲するオブジェクトの設定と、 メソッド委譲を行うためのクラスメソッドの定義を行います。

[PARAM] obj:
委譲先のオブジェクト

[SEE_ALSO] Delegator.new

インスタンスメソッド

! -> bool

自身を否定します。

self != obj -> bool

自身が与えられたオブジェクトと等しくない場合は、真を返します。 そうでない場合は、偽を返します。

[PARAM] obj:
比較対象のオブジェクトを指定します。
self == obj -> bool

自身が与えられたオブジェクトと等しい場合は、真を返します。 そうでない場合は、偽を返します。

[PARAM] obj:
比較対象のオブジェクトを指定します。
__getobj__ -> object

委譲先のオブジェクトを返します。

[SEE_ALSO] Delegator#__getobj__

__getobj__ -> object

委譲先のオブジェクトを返します。

本メソッドは、サブクラスで再定義する必要があり、 デフォルトでは NotImplementedError が発生します。

[EXCEPTION] NotImplementedError:
サブクラスにて本メソッドが再定義されていない場合に発生します。
__setobj__(obj) -> object

委譲先のオブジェクトを obj に変更します。

メソッド委譲を行うためのクラスメソッドの再定義は行われないことに注意してください。 メソッド委譲を行うためのクラスメソッドの定義は生成時にのみ行われます。 そのため、以前の委譲先オブジェクトと obj の間で呼び出せるメソッドに違いがあった場合は、 何かしらの可能性が発生する可能性があります。

[PARAM] obj:
委譲先のオブジェクト
[RETURN]
変更後の委譲先オブジェクト
__setobj__(obj) -> object

委譲先のオブジェクトをセットします。

[PARAM] obj:
委譲先ののオブジェクトを指定します。
[EXCEPTION] NotImplementedError:
サブクラスにて本メソッドが再定義されていない場合に発生します。
freeze -> self

自身を凍結します。

[SEE_ALSO] Object#freeze

marshal_dump -> object

シリアライゼーションをサポートするためにDelegator#__getobj__ が返すオブジェクトを返します。

marshal_load(obj) -> object

シリアライズされたオブジェクトから、Delegator#__getobj__ が返すオブジェクトを再現します。

[PARAM] obj:
Delegator#marshal_dumpの戻り値のコピー
method_missing(m, *args) -> object

渡されたメソッド名と引数を使って、Delegator#__getobj__ が返すオブジェクトへメソッド委譲を行います。

[PARAM] m:
メソッドの名前(シンボル)
[PARAM] args:
メソッドに渡された引数
[RETURN]
委譲先のメソッドからの返り値

[SEE_ALSO] BasicObject#method_missing

methods -> [Symbol]

そのオブジェクトに対して呼び出せるメソッド名の一覧を返します。 このメソッドは public メソッドおよび protected メソッドの名前を返します。

[SEE_ALSO] Object#methods

protected_methods(all = true) -> [Symbol]

そのオブジェクトが理解できる protected メソッド名の一覧を返します。

[PARAM] all:
偽を指定すると __getobj__ のスーパークラスで定義されたメソッドを除きます。

[SEE_ALSO] Object#protected_methods

public_methods(all = true) -> [Symbol]

そのオブジェクトが理解できる public メソッド名の一覧を返します。

[PARAM] all:
偽を指定すると __getobj__ のスーパークラスで定義されたメソッドを除きます。

[SEE_ALSO] Object#public_methods

respond_to?(m) -> bool

Delegator#__getobj__ が返すオブジェクトが メソッド m を持つとき真を返します。

[PARAM] m:
メソッド名

[SEE_ALSO] Object#respond_to?

respond_to_missing?(m, include_private) -> bool
[PARAM] m:
メソッド名を指定します。
[PARAM] include_private:
真を指定すると private メソッドも調べます。
class SimpleDelegator