basyura's blog

あしたになったらほんきだす。

Enumerable

コードの世界より。
each メソッドさえ実装しておけば Enumerable を include することでいろいろなメソッドが使えるようになる。

class Test
  include Enumerable
  def each
    [1,2,3,4,5].each {|v|
      yield v
    }
  end
end

puts Test.new.map{|x| x * 2}
#=> 2,4,6,8,10
puts Test.new.max
#=> 5
puts Test.new.inject{|x,y| x + y}
#=> 15