我想使用 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中的括号是可选的呢?
items.push :a => "b", :c => "d"
的效果正如预期... - Patrick Oscity{}
,所以 Ruby 不会将其错误地解析为块。相反,它会正确地解析为方法调用push(:a => "b", :c => "d")
。最初的问题是由于您有一个模棱两可的情况,Ruby 编译器需要“猜测”您的意思(块或方法参数)。因为计算机不太擅长读取您的想法,所以它会抛出错误。 - Casper