Enumerable モジュールの include(Ruby)

Enumerable モジュールを include することで、Enumerable の多くのメソッドが使えます。必ず each を実装すること。

class SortedList
  include Enumerable
  def initialize
    @data = []
  end
  
  def <<(element)
    (@data << element).sort!
  end
  
  def each
    @data.each {|e| yield(e)}
  end
end

if __FILE__ == $0
  a = SortedList.new
  a << 8
  a << 1
  a << 9
  p a    #=>#<SortedList:0x007fd3dabf1fc0 @data=[1, 8, 9]>
  p a.inject(&:+)    #=>18
  p a.max    #=>9
  p a.map {|i| i * i}    #=>[1, 64, 81]
end



Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック