クラスに対し、メソッドの委譲機能を定義するモジュールです。
クラスに対して Object#extend して使います。Module#include でないところに注意して下さい。
例:
require 'forwardable' class Foo extend Forwardable def_delegators("@out", "printf", "print") def_delegators(:@in, :gets) def_delegator(:@contents, :[], "content_at") end f = Foo.new f.printf ... f.gets f.content_at(1)
debug -> bool
[permalink][rdoc]委譲部分をバックトレースに含めるかどうかの状態を返します。
バックトレースを含める設定となっている時、真を返します。デフォルトは含めない設定となっています。
debug= -> bool
[permalink][rdoc]委譲部分をバックトレースに含めるかどうかの状態を設定します。
def_instance_delegator(accessor, method, ali = method) -> ()
[permalink][rdoc]def_delegator(accessor, method, ali = method) -> ()
メソッドの委譲先を設定します。
委譲元のオブジェクトで 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
def_instance_delegators(accessor, *methods) -> ()
[permalink][rdoc]def_delegators(accessor, *methods) -> ()
メソッドの委譲先をまとめて設定します。
委譲元のオブジェクトで methods のそれぞれのメソッドが呼び出された場合に、委譲先のオブジェクトの同名のメソッドへ処理が委譲されるようになります。
def_delegators は def_instance_delegators の別名になります。
また、以下の 2 つの例は同じ意味です。
def_delegators :@records, :size, :<<, :map def_delegator :@records, :size def_delegator :@records, :<< def_delegator :@records, :map
[SEE_ALSO] Forwardable#def_delegator
instance_delegate(hash) -> ()
[permalink][rdoc]delegate(hash) -> ()
メソッドの委譲先を設定します。
例:
require 'forwardable' class Zap extend Forwardable delegate :length => :@str delegate [:first, :last] => :@arr def initialize @arr = %w/foo bar baz/ @str = "world" end end zap = Zap.new zap.length # => 5 zap.first # => "foo" zap.last # => "baz"
FORWARDABLE_VERSION -> "1.1.0"
[permalink][rdoc]forwardable ライブラリのバージョンを返します。