簡體   English   中英

了解參數在Ruby中的工作方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM