Ruby の Enumerator でジェネレータを作ったり,遅延評価してみる
Keywords:
Ruby には Enumerable モジュールってのがあって,これを include したオブジェクトは,自身に対して何かしらの反復処理ができるようになる*1.
また,その反復処理を用いた Enumerable#map
とか Enumerable#select
*2 とか Enumerable#reduce
とかが使えるようになる.
更に,Enumerator
というものがある.Enumerable
がモジュールなのに対して,Enumerator
はクラスなので,インスタンス化できる.また,Enumerator
は Enumerable
を include している.この Enumerator
は,外部イテレータ,いわゆるジェネレータとして使える.