Rails速度很快

时间:2014-04-15 10:22:59

标签: ruby-on-rails ruby arrays hash flatten

我正在从YAML文件加载配置。

我有一个如下所示的哈希:{:first=>{:abc=>[["one", "two", "three"]], :def => [["one", "two", "three"]]}, :second=>{:abc=>[["one", "two", "three"]]}}

但我想得到:

{:first=>{:abc=>["one", "two", "three"], :def => ["one", "two", "three"]}, :second=>{:abc=>["one", "two", "three"]}}

即使端部阵列变平。 结构不会比这里显示的任何“更深”。

首选单行代码。

1 个答案:

答案 0 :(得分:7)

这应该有效:

hash.each_value do |nested_hash|
  nested_hash.each_value do |array|
    array.flatten!
  end
end

或者,在单行版本中:

hash.each_value { |nested_hash| nested_hash.each_value(&:flatten!) }