<each_with_objectメソッドとは>
配列やハッシュの要素を使って、新たに配列やハッシュを作成する。eachやinjectと同じように繰り返しを行うメソッド
例)
array = [[:ogino, 1], [:fujiwara, 2], [:nakamura, 3]]
array.each_with_object({}) do | (key, value), hash |
hash[key] = value
end
=> {:ogino=>1, :fujiwara=>2, :nakamura=>3}
<injectメソッドとの違い>
array = [[:ogino, 1], [:fujiwara, 2], [:nakamura, 3]]
hash = array.inject({}) do | hash, (key, value) |
hash[key] = value
hash
end
p array => [[:ogino, 1], [:fujiwara, 2], [:nakamura, 3]]
p hash => {:ogino=>1, :fujiwara=>2, :nakamura=>3}
・each_with_objectメソッドは破壊的メソッド*に対し、injectメソッドは破壊的メソッドではない
*レシーバにあたるオブジェクトの値そのものを変更してしまうメソッド
・ブロック変数の書き方の順が逆