blog.ryota-ka.me

RubyのEnumeratorでジェネレータを作ったり,遅延評価してみる

RubyにはEnumerableモジュールってのがあって,これをincludeしたオブジェクトは,自身に対して何かしらの反復処理ができるようになる*1.また,その反復処理を用いたEnumerable#mapとかEnumerable#select*2とかEnumerable#reduceとかが使えるようになる.

更に,Enumeratorというものがある.Enumerableがモジュールなのに対して,Enumeratorはクラスなので,インスタンス化できる.また,EnumeratorEnumerableをincludeしている.このEnumeratorは,外部イテレータ,いわゆるジェネレータとして使える.

続きを読む