初めてのRuby − 2.3 Enumerableモジュール
Eumerableモジュール
each メソッドを定義して Enumrable を include すれば map などの一連のメソッドが使えるようになる。
class MyClass def initialize @data = [1, 5, 3, 2] end def each @data.each do |d| yield(d) end end include Enumerable # これで sort が使える end a = MyClass.new a.each do |d| puts d end p a.sort # include が無ければ method_missing
Enumerator クラス
each 以外のメソッドについて、Enumerableのメソッドを導出するプロキシクラス。
本の例では1行だけれど、生成されたクラスを変数に入れてみる。
a = [1,4,2,5,3] enum = a.enum_for(:each_with_index) p enum.map {|d, i| "[#{i}] = #{d}"}