【问题标题】:Inject not working as expected注入未按预期工作
【发布时间】:2013-02-20 16:56:19
【问题描述】:

谁能解释为什么这两个sn-ps的代码不等价?要么我遗漏了一些东西,要么注入没有做我认为它做的事情。给定:

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}"

为什么?

【问题讨论】:

    标签: ruby inject


    【解决方案1】:

    注入未按预期工作

    嗯,你的期望是错误的。 :)

    阻塞到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}"}
    

    【讨论】:

    • 谢谢!时间不早了,知道我厚了!
    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多