在Ruby中构建数据结构

时间:2018-02-23 16:57:51

标签: ruby

我正在尝试通过循环数组来构建数据结构。 这就是我所拥有的

{"root"=>["a1","a2"]}

哪个给了我

{
  "r"=> {
    "a1"=> {
      "key1"=> "value2",
      "key2"=> "value2"
    },
    "a2"=> {
      "key1"=> "value2",
      "key2"=> "value2"
    }
  }
}

我在此之后

'<span style="target_style" class="target_class">'

有人能告诉我出错的地方吗?

2 个答案:

答案 0 :(得分:2)

您正在使用each,它只返回数组本身。而不是那样,你需要使用map

content = { 'root' =>
  a.map do | v |
    func(v)
  end
}

或者用更好的语法,因为块是一行:

content = {
  'root' => a.map { |v| func(v) }
}

答案 1 :(得分:1)

它仍然需要一些重构,但你会得到这个想法。如果你使用map它将返回数组并导致&#34; r&#34;将是数组而不是哈希。

{"r": a.each_with_object(Hash.new(0)) 
  { |h1, h2| h2[h1]={"key1"=>"value2", "key2"=>"value2"} }
}

它将完全返回

{:r=>{
     "a1"=>{"key1"=>"value2", "key2"=>"value2"}, 
     "a2"=>{"key1"=>"value2","key2"=>"value2"}
     }
}