injectとeach_with_objectの違いが分からない。 どちらもEnumerableなオブジェクトの要素を使って何かしらのオブジェクトを得る。 でもやっぱり違いがあったのでメモ。 イメージで説明 injectは、各要素が力を合わせて一つのオブジェクトを作る each_with_objectは、ターゲットとなるオブジェクトに対して、各要素を作用させる 挙動で説明 配列の各要素を2乗する処理を書く。表面上は同じ挙動をする。 でもdoの後のresultは、同じresultでも意味合いが違っていて、 injectの場合はresultにはブロック内で最後に評価した値が入る each_with_objectの場合は、resultは常にeach_with_objectの引数として渡されたオブジェクトを指す # inject [1, 2, 3].inject [] do |result, i|