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 =>
答案 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"}]
}