Ruby 如何返回具有修改值的哈希数组
我已经成功地将对象数组转换为哈希数组。但我也希望在获得组合哈希之前稍微修改对象 以下是我将对象数组转换为组合哈希的步骤:Ruby 如何返回具有修改值的哈希数组,ruby,enumerate,Ruby,Enumerate,我已经成功地将对象数组转换为哈希数组。但我也希望在获得组合哈希之前稍微修改对象 以下是我将对象数组转换为组合哈希的步骤: prev_vars.map(&:to_h).reduce({}, :merge) { "b"=>#<Money fractional:400 currency:GBP> } 我使用这一行实现了这一点,但我正在寻找更优雅的解决方案: prev_vars.map(&:to_h).reduce({}) { |combined, v| combin
prev_vars.map(&:to_h).reduce({}, :merge)
{ "b"=>#<Money fractional:400 currency:GBP> }
我使用这一行实现了这一点,但我正在寻找更优雅的解决方案:
prev_vars.map(&:to_h).reduce({}) { |combined, v| combined.merge({v.keys[0] => v.values[0].to_i}) }
上一个变量有多大<代码>映射(&:to_h)可能需要相当大的内存开销,因为它实例化了一个全新的数组。相反,我建议改变顺序:首先减少,然后再减少到
prev_vars.reduce({}) do |combined, var|
combined.merge! var.to_h.transform_values!(&:to_i)
end
注意#merge
而不是#merge
,这样就不会为循环的每个迭代的组合的
创建新的哈希
prev_vars.reduce({}) do |combined, var|
combined.merge! var.to_h.transform_values!(&:to_i)
end