繁体   English   中英

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

[英]How can I put an array of hashes, within a hash in Ruby?

Perl有一个很好的文档,介绍了数组和哈希组合 ,但是我找不到用于Ruby的文档。

当我尝试

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

p data

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

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

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

[{"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"}] 因为这符合哈希定义,所以不会有错误。 您可以为密钥命名,只要有密钥即可。

也许您的意思是“数组和哈希的组合”

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

这里是两个元素的数组:一个哈希和一个哈希数组。 无论您是否要-从您的问题我都无法分辨。

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

key => value

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

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

不确定为什么在数组中包含哈希? 有必要吗? 可能是因为数组没有键,请尝试这样做

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM