Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Enumerator::each_with_object()メソッドの使い方

each_with_objectメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

each_with_objectメソッドは、Enumerableモジュールをインクルードしているオブジェクト(配列やハッシュなど)の各要素に対して繰り返し処理を実行する際に、指定された任意のオブジェクトを一緒に渡して処理を行うメソッドです。このメソッドは、第一引数に任意のオブジェクト(例えば、空の配列、ハッシュ、数値など)を受け取ります。そして、ブロックを呼び出すたびに、コレクションの現在の要素と、引数で渡されたオブジェクトの二つをブロック引数として渡します。

ブロック内では、渡されたオブジェクトを自由に操作(追加、更新、計算など)することができ、繰り返し処理を通じてそのオブジェクトの状態を変化させることが可能です。例えば、配列の各要素を処理しながら、その結果を新しいハッシュにまとめたり、数値の合計値を計算したりする場合などに役立ちます。元のコレクションの要素自体を変更するのではなく、外部のオブジェクトを集約や変換の「入れ物」として活用したい場合に特に便利です。

メソッドの実行が完了すると、引数として渡された元のオブジェクトが戻り値として返されます。これにより、繰り返し処理を通じて変更されたオブジェクトをそのまま後続の処理で利用することができます。このように、各要素に対する処理結果を一つのオブジェクトに蓄積していくような用途に適しており、集計や変換処理を簡潔に記述できるため、Rubyのプログラミングにおいて非常に汎用性が高いです。

構文(syntax)

1[1, 2, 3].each_with_object([]) do |element, memo_array|
2  memo_array << element * 2
3end

引数(parameters)

obj

  • obj: 各要素を処理する際に、初期値として渡され、ブロック内で共有・変更されるオブジェクト

戻り値(return)

Enumerator または self

each_with_objectメソッドは、各要素を処理しながら、指定されたオブジェクト(初期値)を収集して返します。このメソッドは、収集用のオブジェクトを保持しつつ、元の列挙子をそのまま返します。

関連コンテンツ