0

RSpecコードのサンプルコードは次のとおりです。

describe Thing do
  def create_thing(options)
    thing = Thing.new
    thing.set_status(options[:status])
    thing
  end

  it "should do something when ok" do
    thing = create_thing(:status => 'ok')
    thing.do_fancy_stuff(1, true, :move => 'left', :obstacles => nil)
    ...
  end
end

だから私の混乱は主にこの行にあります:

thing.set_status(options[:status])

したがって、create_thingメソッドには「オプション」パラメーターがあり、そのパラメーターのステータス部分を渡しますか?誰かがこの構文を簡単な言葉で説明できますか?

4

2 に答える 2

3

options単なる変数です。あなたが理解する必要がある部分はこの部分です

thing = create_thing(:status => 'ok') 

基本的にはHashcreate_thingに渡すためoptions、ハッシュになります。status次に、を実行してキーの値にアクセスできますoptions[:status]

上記の行が次のようになっている場合

thing = create_thing("Foo")

options「Foo」になり、次のようなことをしようとするとエラーが発生する可能性がありますoptions[:status]

于 2013-01-28T21:27:55.970 に答える
2

create_thingと呼ばれる引数を取りますoptions

オプションはハッシュであることが期待されます(ほとんどの場合)。

キー(シンボル):optionを含むハッシュ値をset_statusメソッドに渡します。

暗黙のハッシュをに渡しましたcreate_thing

create_thing({ status: 'ok' })と同じ
create_thing(status: 'ok')です
create_thing(:status => 'ok')

どのように呼んでも、を介してその値にアクセスoptions[:status]します。

于 2013-01-28T21:27:27.887 に答える