クラスに対しメソッドの委譲機能を定義します.
クラスに対してextendして使います.
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)
Forwardable#def_instance_delegators(accessor, *methods)methodsで渡されたメソッドのリストをaccessorに委譲する ようにします.
Forwardable#def_instance_delegator(accessor, method, ali = method)|methodで渡されたメソッドをaccessorに委譲するようにし ます. aliが引数として渡されたときは, メソッドaliが呼ば れたときには, accessorに対しmethodを呼び出します.
Forwardable#def_delegators(accessor, *methods)Forwardable#def_instance_delegatorsの別名です.
Forwardable#def_delegator(accessor, method, ali = method)Forwardable#def_instance_delegatorの別名です.
オブジェクトに対し, メソッドの委譲機能を定義します.
オブジェクトに対してextendして使います.
g = Goo.new
g.extend SingleForwardable
g.def_delegator("@out", :puts)
g.puts ...
SingleForwardable#def_singleton_delegators(accessor, *methods)methodsで渡されたメソッドのリストをaccessorに委譲する ようにします.
SingleForwardable#def_singleton_delegator(accessor, method, ali = method)methodで渡されたメソッドをaccessorに委譲するようにしま す. aliが引数として渡されたときは, メソッドaliが呼ばれ たときには, accessorに対しmethodを呼び出します.
SingleForwardable#def_delegators(accessor, *methods)SingleForwardable#def_singleton_delegatorsの別名です.
SingleForwardable#def_delegator(accessor, method, ali = method)SingleForwardable#def_singleton_delegatorの別名です.