7. Enumerableモジュール
●
モジュール
●
クラスに#eachが
定義されている前提で動作するメソッド群
●
順々に何かを数え上げるような動作を期待
class Hoge
def each
yield 1; yield 2; yield 3
end
end
Hoge.send(:include, Enumerable)
h = Hoge.new
puts h.map { |x| x*2 }
8. Enumerable – 1.9からのお約束
●
#eachにブロックを渡さない場合の挙動
●
Enumeratorクラスのインスタンスを返す
class Hoge
def each &block
Enumerator.new do |y|
y << 1; y << 2; y << 3
end.each(&block)
end
end
Hoge.send(:include, Enumerable)
h = Hoge.new
e = h.map
puts e.map { |x| x*2 }