Forwardable模块

浏览:2205 发布日期:2018-01-26 08:41:54

Forwardable模块

此模块用于代理一些方法

例如

class RecordCollection
  attr_accessor :records
  extend Forwardable
  def_delegator :@records, :[], :record_number
end

@records是一个数组,defdelegator为这个类定义一个方法别名,这样可以通过rc.recordnumber(index)来访问指定索引的@records,换言之,record_number代理了@records的[]方法

class RecordCollection # re-open RecordCollection class
  def_delegators :@records, :size, :<<, :map
end

代理更多方法,可以通过rc.size, rc << 4, rc.map等方法来直接调用。