ドキュメントには次のように記載されています。
任意のオブジェクト obj を使用して各要素に対して指定されたブロックを反復し、obj を返します
任意のオブジェクト obj を使用して各要素に対して指定されたブロックを反復し、obj を返します
しかし、両方の構成で以下を試したところ、1つは期待どおりの出力が得られましたが、他のものはそうではありませんでした。したがって、これら2つの構造には違いがあると思います。
使用するeach_with_object
%w(foo bar).each_with_object({}) { |str, hsh| hsh[str] = str.upcase }
=> {"foo"=>"FOO", "bar"=>"BAR"}
ここで成功!
使用するwith_object
%w(foo bar).with_object({}) { |str, hsh| hsh[str] = str.upcase }
=> NoMethodError: undefined method `with_object' for ["foo", "bar"]:Array
from (irb):1
from C:/Ruby193/bin/irb:12:in `<main>'
ここで失敗!
では、これら2つの方法の違いは何ですか?