Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > forwardableライブラリ > Forwardableモジュール > def_delegator

instance method Forwardable#def_delegator

def_instance_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_instance_delegator の別名になります。

例:

require 'forwardable'
class MyQueue
  extend Forwardable
  attr_reader :queue
  def initialize
    @queue = []
  end

  def_delegator :@queue, :push, :mypush
end

q = MyQueue.new
q.mypush 42
q.queue    # => [42]
q.push 23  # => NoMethodError

[SEE_ALSO] Forwardable#def_delegators