以下是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”参数然后我们传递该参数的状态部分?有人能用一些更简单的词来解释这种语法吗?
答案 0 :(得分:3)
options
只是一个变量。您需要了解的部分是这部分
thing = create_thing(:status => 'ok')
您基本上是将Hash
传递给create_thing,因此options
是一个哈希值。然后,您可以通过执行status
来访问options[:status]
密钥的值。
如果上述行看起来像这样
thing = create_thing("Foo")
options
将是“Foo”,您可能会在尝试执行options[:status]
答案 1 :(得分:2)
create_thing
采用名为options
的参数。
期望选项是哈希(最有可能)。
您正在使用键(符号):option
将哈希值传递给set_status
方法。
您已将隐式哈希传递给create_thing
:
create_thing({ status: 'ok' })
与
相同
create_thing(status: 'ok')
与
相同
create_thing(:status => 'ok')
无论如何,只要通过options[:status]
访问该值,