Rubyのeach_with_objectメソッド: 各要素と与えられたオブジェクトに対してブロックを実行
Rubyのeach_with_objectメソッドは、繰り返し処理をしながら、与えられたオブジェクトをブロックに渡し、そのオブジェクトに対する操作を行うことができます。
この記事では、each_with_objectメソッドの使い方とその応用例をいくつか紹介します。
each_with_objectメソッドの基本的な使い方
each_with_objectメソッドは、配列やハッシュなどのコレクションを処理する際に特に有用です。
ソースコード例: 基本的な使い方
1 2 3 4 5 |
numbers = [1, 2, 3, 4, 5] sum = numbers.each_with_object(0) do |number, obj| obj += number end puts sum |
出力結果:
出力結果
15
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
each_with_objectメソッドとハッシュとの組み合わせ
each_with_objectはハッシュと組み合わせて、集計やマッピングを行うのにも使えます。
ソースコード例: ハッシュとの組み合わせ
1 2 3 4 5 |
words = ["cat", "dog", "fish", "bird"] word_lengths = words.each_with_object({}) do |word, hash| hash[word] = word.length end puts word_lengths |
出力結果:
出力結果
{"cat" => 3, "dog" => 3, "fish" => 4, "bird" => 4}
each_with_objectメソッドと複雑なデータ構造との組み合わせ
より複雑なデータ構造とeach_with_objectを組み合わせて、多様な処理を実現できます。
ソースコード例: 複雑なデータ構造との組み合わせ
1 2 3 4 5 6 7 8 9 10 11 |
students = [ { name: "Alice", score: 90 }, { name: "Bob", score: 85 }, { name: "Carol", score: 95 } ] average_score = students.each_with_object(0) do |student, sum| sum += student[:score] end / students.size puts average_score |
出力結果:
出力結果
90
まとめ
Rubyのeach_with_objectメソッドは、配列やハッシュなどのコレクションに対してブロックを実行し、同時にオブジェクトに対しても操作を行うことができる強力なメソッドです。
このメソッドを使いこなせば、Rubyのコーディングがより効率的で柔軟になります。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
こちらもCHECK
-
【Ruby rails】each_indexメソッドで各要素のブロックを実行しよう!
Rubyのeach_indexメソッド: 各要素のインデックスに対してブロックを実行 Rubyのeach_indexメソッドは、配列の各要素のインデックスに対してブロックを実行します。 この記事では、 ...
続きを見る