【Ruby】Enumerable と Enumerator の違い がやっぱりピンとこない
■Topic
I study about Enumerable and Enumrator. but i still wonder about it.
うーん。。。。
Enumerator は Enumerable を継承しているから、より限定されているイメージ。
例えば、
[1,2,3].with_index{|e, i| e+i } ←NoMethodError [1,2,3].map.with_index{|e, i| e+i } ←[1, 3, 5] [1,2,3].select.with_index{|e, i| e+i < 5 } ←[1, 2]
あーなるほど。。
Enumerable に、イテレート方法を合わせたものが Enumerator というイメージかな。
ちなみにインデックスを使った結果を返したい場合は、
[1,2,3].select.with_index{|e, i| e+i < 5 } [1,2,3].map.with_index.with_object([]){|(e, i), arr| arr << e+i if e+i < 5 }
■実行結果
[1, 2] [1, 3]
ううむ。