我试图了解{{}}
在[[]]
工作时出现了什么问题。
#works fine
a = []
a = [[]]
h = {}
h = {{}} #throws syntax error, unexpected '}', expecting =>
答案 0 :(得分:3)
因为[[]]
是数组数组,而{{}}
是无意义的垃圾。
答案 1 :(得分:2)
因为哈希包含键和值之间的映射,所以当数组只包含值列表时。
考虑{}
哈希。就其本身而言,它只是一种价值。
所以你绝对可以做到:
{ a: {} }
但是
{ {} }
本身是不够的。
另请注意
[ {} ]
显然有效。
答案 2 :(得分:1)
您可以通过提供零个或多个键值对来创建哈希。
{}
创建一个零键值对的散列,即空散列{'foo' => 'bar'}
使用一对(密钥'foo'
和值'bar'
){'foo'}
提出SyntaxError
,因为只有一个键,缺少值错误消息显示相同:unexpected '}', expecting =>
,即Ruby预计在=>
之后'foo'
,而不是结束}
。
{{}}
引发相同的SyntaxError
因为缺少值。相当于[[]]
的哈希值可能如下所示:
{{}=>{}}
答案 3 :(得分:0)
数组只需要值作为成员 所以,在这种情况下:
a = [[]]
该成员为[]
,这是一个空数组
另一方面,哈希需要一个键和一个值来成为一个成员
因此,制作哈希的公式是:
h = { a key => a value, ...}
散列的每个成员用逗号分隔 因此,如果要创建一个包含空哈希的有效哈希 您可以选择以下其中一种:
h = { :key => {} }
或
h = { {} => :value }