谁能解释为什么这两个代码片段不等价?要么我遗漏了一些东西,要么注入没有做我认为它做的事情。鉴于:
nodes = [{id: 1}, {id: 2}]
这段代码:
result = Hash.new
nodes.each do |node|
result[node[:id]] = node.inspect
end
result
返回
{
1 => "{:id=>1}",
2 => "{:id=>2}"
}
但是这个:
nodes.inject({}) {|hash, node|hash[node[:id]] = node.inspect}
返回:
"{:id=>2}"
为什么?