2016-11-23 8 views
3

私はこれが通常の場合であることを確信しているが、それはここで働いていない理由を私はよく分からない:ここではハッシュが最後の引数である場合、括弧はオプションであるとは思われませんか?

はコード

let(:stubbed_object_list) { [OpenStruct.new key: "foo"] } 

だし、ここでエラーです:

SyntaxError: ...filepath...: syntax error, unexpected tLABEL, expecting ']' 

代わりにOpenStruct.new(key: "foo")を使用してコードを修正できますが、なぜこれが必要なのかわかりません。

私はこれが正常に動作しますので、それは、配列のブラケットとは何かを持っていると思っています:

let(:stubbed_object_list) { OpenStruct.new key: "foo" } 

答えて

5

あなたは他のキーと値のペアを追加する場合、それがあいまいになり:

[OpenStruct.new key: "foo", other: "bar"] 

other: "bar"別の配列要素でもよい:

[OpenStruct.new(key: "foo"), other: "bar"] 
#=> [#<OpenStruct key="foo">, {:other=>"bar"}] 

または別の引数:

[OpenStruct.new(key: "foo", other: "bar")] 
#=> [#<OpenStruct key="foo", other="bar">] 
関連する問題