Enumerable class MyEnum include Enumerable def initialize(*args) @values = args end def each @args.each{|x| yield x} end end e = MyEnum.new(1,2,3) e.reject{|x| x%2==0} #=> [1,3] e.max #=> 3