Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more

In Files

  • forwardable.rb

Class/Module Index [+]

Quicksearch

SingleForwardable

The SingleForwardable module provides delegation of specified methods to a designated object, using the methods def_delegator and def_delegators. This module is similar to Forwardable, but it works on objects themselves, instead of their defining classes.

Also see the example at forwardable.rb.

Public Instance Methods

def_delegator(accessor, method, ali = method) click to toggle source
def_delegators(accessor, *methods) click to toggle source
def_singleton_delegator(accessor, method, ali = method) click to toggle source

Defines a method method which delegates to obj (i.e. it calls the method of the same name in obj). If new_name is provided, it is used as the name for the delegate method.

See the example at forwardable.rb.

 
               # File forwardable.rb, line 199
  def def_singleton_delegator(accessor, method, ali = method)
    accessor = accessor.id2name if accessor.kind_of?(Integer)
    method = method.id2name if method.kind_of?(Integer)
    ali = ali.id2name if ali.kind_of?(Integer)

    instance_eval("       def #{ali}(*args, &block)
         begin
           #{accessor}.__send__(:#{method}, *args,&block)
         rescue Exception
           $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
           Kernel::raise
         end
       end
", "(__FORWARDABLE__)", 1)
  end
            
Also aliased as: def_delegator
def_singleton_delegators(accessor, *methods) click to toggle source

Shortcut for defining multiple delegator methods, but with no provision for using a different name. The following two code samples have the same effect:

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

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

See the example at forwardable.rb.

 
               # File forwardable.rb, line 186
def def_singleton_delegators(accessor, *methods)
  for method in methods
    def_singleton_delegator(accessor, method)
  end
end
            
Also aliased as: def_delegators

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus