3

我想使用 Ruby 1.8.7 版将哈希添加到数组中:

items = Array.new
items.push {:a => "b", :c => "d"}

上面的语句将返回如下错误:

SyntaxError: compile error
(irb):35: syntax error, unexpected tASSOC, expecting '}'
items.push {:a => "b", :c => "d"}
                 ^
(irb):35: syntax error, unexpected ',', expecting '}'
items.push {:a => "b", :b => "c"}
                      ^

好吧,我发现解决方案是将 push 参数包含在括号中( ),或者我可以使用<<运算符。我也知道push接受一个或多个参数并且<<只接受这个答案中的一个参数,但困扰我的是为什么我需要使用括号,而我们都知道 Ruby 中的括号是可选的?

4

1 回答 1

7

我的猜测是,这是因为 ruby​​ 试图将散列解析为一个块,期望代码而不是散列键和值。这类似于:

items.push() do
  :a => "b", :b => "c"
end

这是无效的语法。

于 2012-07-03T09:20:34.177 回答