module SingleForwardable

要約

オブジェクトに対し、メソッドの委譲機能を定義するモジュールです。

使い方

オブジェクトに対して extend して使います。

例:

require 'forwardable'
g = Goo.new
g.extend SingleForwardable
g.def_delegator("@out", :puts)
g.puts ...

また、SingleForwardable はクラスやモジュールに対して以下のようにする事もできます。

require 'forwardable'
class Implementation
  def self.service
    puts "serviced!"
  end
end

module Facade
  extend SingleForwardable
  def_delegator :Implementation, :service
end

Facade.service # => serviced!

もし ForwardableSingleForwardable の両方を使いたい場合、 def_instance_delegator と def_single_delegator メソッドの方を呼び出してください。

目次

インスタンスメソッド

インスタンスメソッド

def_single_delegator(accessor, method, ali = method) -> ()[permalink][rdoc]
def_delegator(accessor, method, ali = method) -> ()

メソッドの委譲先を設定します。

[PARAM] accessor:
委譲先のオブジェクト
[PARAM] method:
委譲先のメソッド
[PARAM] ali:
委譲元のメソッド

委譲元のオブジェクトで ali が呼び出された場合に、委譲先のオブジェクトの method へ処理が委譲されるようになります。

委譲元と委譲先のメソッド名が同じ場合は, ali を省略することが可能です。

def_delegator は def_singleton_delegator の別名になります。

[SEE_ALSO] SingleForwardable#def_delegators

def_single_delegators(accessor, *methods) -> ()[permalink][rdoc]
def_delegators(accessor, *methods) -> ()

メソッドの委譲先をまとめて設定します。

[PARAM] accessor:
委譲先のオブジェクト
[PARAM] methods:
委譲するメソッドのリスト

委譲元のオブジェクトで methods のそれぞれのメソッドが呼び出された場合に、委譲先のオブジェクトの同名のメソッドへ処理が委譲されるようになります。

def_delegators は def_singleton_delegators の別名になります。

また、以下の 2 つの例は同じ意味です。

def_delegators :@records, :size, :<<, :map

def_delegator :@records, :size
def_delegator :@records, :<<
def_delegator :@records, :map

[SEE_ALSO] SingleForwardable#def_delegator

single_delegate(hash) -> ()[permalink][rdoc]
delegate(hash) -> ()

メソッドの委譲先を設定します。

[PARAM] hash:
委譲先のメソッドがキー、委譲先のオブジェクトが値の Hash を指定します。キーは SymbolString かその配列で指定します。

[SEE_ALSO] Forwardable#delegate