如何在Ruby中的哈希中放入一个哈希数组?

时间:2015-07-24 12:46:58

标签: arrays ruby hash

Perl有一个非常好的combinations of arrays and hashes文档,但我找不到Ruby的文档。

当我尝试

data = {
  "key" => "value",
  [{"name"=>"abc", "number"=>898, "email"=>"abc@xyz.com"}]
}

p data

我收到以下错误。我做错了什么?

test.rb:3: syntax error, unexpected '\n', expecting =>

4 个答案:

答案 0 :(得分:6)

哈希必须是键值对。但是你的第二个要素不是:

[{"name"=>"abc", "number"=>898, "email"=>"abc@xyz.com"}]

应该是这样的:

data = {
  "key" => "value",
  "array" => [{"name"=>"abc", "number"=>898, "email"=>"abc@xyz.com"}]
}

如您所见,我添加了一个值为"array"的新密钥[{"name"=>"abc", "number"=>898, "email"=>"abc@xyz.com"}]。由于这符合Hash定义,因此不会出现错误。只要你有钥匙,你就可以为钥匙命名。

答案 1 :(得分:6)

也许你的意思是"阵列和散列的结合"

data = [
  { "key" => "value"},
  [{"name"=>"abc", "number"=>898, "email"=>"abc@xyz.com"}]
]

这里有两个元素的数组:散列和散列数组。是否是你想要的东西 - 我无法告诉你(从你的问题)。

答案 2 :(得分:1)

在这里,您声明一个哈希并将其设置为data变量。 因此,ruby需要语法:

key => value

但是你的第二个元素不是这种形式,它只是一个值(一个数组),没有关联的键!我不知道Perl,但Ruby不允许它。 你可以这样做:

data = {
   "key" => "value",
   "key2" => [{"name"=>"abc", "number"=>898, "email"=>"abc@xyz.com"}]
}

答案 3 :(得分:-1)

不确定为什么你在数组中有哈希?有必要吗? 可能是因为数组没有键,试试这个

data = {
  "key":"value",
  array:[hash:{"name":"abc", "number"=>898, "email"=>"abc@xyz.com"}]
}