Rubyリファレンス: Home

each_with_object (Enumerable)

Edit   History

Ruby 1.9

標準クラス・モジュール > Enumerable > each_with_object

enum.each_with_object(object) {|item, memo| block }

each_with_indexメソッドは、要素を使って何らかのオブジェクトを操作するのに使います。要素の数だけブロックを繰り返し実行し、繰り返しごとにブロック引数itemには各要素を、memoには引数objectで指定したオブジェクトを入れます。戻り値は、objectのオブジェクトです。

injectメソッドと似ていますが、戻り値やブロック引数の扱いが異なります。

次の例では、引数に空の配列を指定しています。ハッシュscoresから60以上の値を持つものを調べ、配列にキーを集めます。

scores = { 'Carol' => 90, 'Alice' => 50, 'David' => 40, 'Bob' => 60 }
names = scores.each_with_object([]) do |(key, val), arr|
  arr << key if val >= 60
end
p names.sort
["Bob", "Carol"]

関連項目