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また、1つ以上の引数を受け入れ、この回答<<から1つの引数のみを受け入れることも知っていますが、Rubyの括弧はオプションであることは誰もが知っているのに、なぜ括弧を使用する必要があるのでしょうか?

4

1 に答える 1

7

これは、Ruby がハッシュ キーと値ではなくコードを期待して、ハッシュをブロックとして解析しようとしているためだと推測されます。これは次のようになります。

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

これは有効な構文ではありません。

于 2012-07-03T09:20:34.177 に答える