[英]Understanding how parameters work in Ruby
這是來自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方法具有一個“ option”參數,然后我們傳遞該參數的狀態部分嗎? 有人可以用一些簡單的詞解釋這個語法嗎?
options
只是一個變量。 您需要了解的部分是這一部分
thing = create_thing(:status => 'ok')
您基本上是將Hash
傳遞給create_thing,因此options
是哈希。 然后,您可以通過執行options[:status]
來訪問status
鍵的值。
如果上面提到的行看起來像這樣
thing = create_thing("Foo")
options
將是“ Foo”,嘗試執行類似options[:status]
操作可能會出錯
create_thing
采用一個稱為options
的參數。
選項應該是哈希值(最有可能)。
您正在將帶有鍵(符號) :option
的哈希值傳遞給set_status
方法。
您已將一個隱式哈希傳遞給create_thing
:
create_thing({ status: 'ok' })
與
create_thing(status: 'ok')
與
create_thing(:status => 'ok')
以任何方式調用它,都可以通過options[:status]
訪問該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.