Ruby 6-4

こんにちは!

しばらくガチャ禁。

Enumerator

Enumerableモジュールの話です。
「列挙のための機能を個々のクラスでていぎしなくてもよい」
「同一の機能を同名のメソッドで提供できる」などのメリットがあります。

enum_basic.rb
Image from Gyazo

Image from Gyazo

文字列msgの各行をチェックしています。

ensum_lazy.rb
Image from Gyazo

Image from Gyazo

lazyメソッドは遅延評価とと言われています。
1行目では処理されず、forceメソッドが呼び出されたところで処理が実行されます。

enum_iterator.rb
Image from Gyazo

Image from Gyazo

eachメソッドのように、ブロックの指示に従って処理を繰り返すものを内部イテレータと言います。
対して、Enumeratorは外部イテレータと言います。
配列から要素を2個取り出すなど、内部イテレーターでは表現しにくい場合に使用します。

少しややこしいですが、使いながら慣れていく必要がありますね。

ではでは。