文档说:
使用任意对象 obj 迭代每个元素的给定块,并返回 obj
使用任意对象 obj 迭代每个元素的给定块,并返回 obj
但是当我在这两种结构上尝试以下操作时,一个给了我预期的输出,但其他的没有。所以我怀疑这两种结构之间存在差异。
使用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>'
这里失败了!
那么这两种方法有什么区别呢?