forwardable的应用场景:用作代理,通过def delegator和def delegators方法,指定实例对象和需要被代理的方法

#一般用法
require 'forwardable'

class RecordCollection
  attr_accessor :records
  extend Forwardable
  #def_delegator的用法,接受实例变量,方法名和新的方法名
  def_delegator :@records, :[], :record_number
end

r = RecordCollection.new
r.records = [4,5,6]
r.record_number(0)  # => 4

class RecordCollection # re-open RecordCollection class
  #def_delegators的用法,接受实例变量,和代理到实例变量上面的方法名
  def_delegators :@records, :size, :<<, :map
end

results matching ""

    No results matching ""