コードの世界より。
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