如何转动
arg2 = {a: "a", b: "b"}
method(arg1, arg2)
进入这个:
method(arg1, a: "a", b: "b")
<小时/> 我试图在
double
中制作RSpec
,其中包含以下参数:
let(:dummy_obj) do
[ double("my dummy object", name: "Mr. Jo", height: "10ft", etc) ]
end
第一个arg是双重对象的名称,之后你可以添加任意数量的键值对,这些键值对成为双重方法(例如dummy_obj.height()
将返回"10ft"
) 。
我想要使用一个巨大的JSON哈希,其中JSON中的每个第一级字段都成为double中的方法。所以,我希望有像*array
这样的东西解包散列中的每个项目,因为它是自己的散列。
答案 0 :(得分:5)
此:
method(arg1, a: "a", b: "b")
与此相同:
method(arg1, { a: "a", b: "b" })
Ruby允许你在哈希是最后一个参数时省略花括号({}
)。
因此,您的代码已经完全符合您的要求:
arg2 = { a: "a", b: "b" }
method(arg1, arg2)
答案 1 :(得分:-1)
我发现这有效:
double("dummy thing", *my_hash.map {|h| {h[0] => h[1]}} )
但感觉有点hacky,仍然对其他建议持开放态度。
:)