blog.ryota-ka.me

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

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

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

続きを読む