谁能解释为什么这两段代码不相同?要么我缺少一些东西,要么注入不做我认为它做的事情.鉴于:
nodes = [{id: 1}, {id: 2}]
Run Code Online (Sandbox Code Playgroud)
这段代码:
result = Hash.new
nodes.each do |node|
result[node[:id]] = node.inspect
end
result
Run Code Online (Sandbox Code Playgroud)
回报
{
1 => "{:id=>1}",
2 => "{:id=>2}"
}
Run Code Online (Sandbox Code Playgroud)
但是这个:
nodes.inject({}) {|hash, node|hash[node[:id]] = node.inspect}
Run Code Online (Sandbox Code Playgroud)
收益:
"{:id=>2}"
Run Code Online (Sandbox Code Playgroud)
为什么?
注入不按预期工作
那么,你的期望是错误的.:)
阻止到inject/ reduce应该返回累加器的新值.
nodes = [{id: 1}, {id: 2}]
res = nodes.inject({}) {|hash, node| hash[node[:id]] = node.inspect; hash}
res # => {1=>"{:id=>1}", 2=>"{:id=>2}"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |