问题
我怎么转
arg2 = {a: "a", b: "b"}
method(arg1, arg2)
进入这个:
method(arg1, a: "a", b: "b")
背景
我正在尝试在
RSpec
中创建一个 double
,它采用如下参数:
let(:dummy_obj) do
[ double("my dummy object", name: "Mr. Jo", height: "10ft", etc) ]
end
第一个参数是 double 对象的名称,之后你可以添加任意数量的键值对成为 double 的方法(例如 dummy_obj.height()
将返回 “10 英尺”
)。
我想使用一个巨大的 JSON 散列,其中 JSON 中的每个第一级字段都成为 double 中的一个方法。所以,我希望有像 *array
这样的东西可以将散列中的每个项目解包为它自己的散列。
最佳答案
这个:
method(arg1, a: "a", b: "b")
与此相同:
method(arg1, { a: "a", b: "b" })
当散列是最后一个参数时,Ruby 允许您省略大括号 ({}
)。
所以你的代码已经完全按照你的要求做了:
arg2 = { a: "a", b: "b" }
method(arg1, arg2)
关于Ruby——将散列解压缩到参数列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38386593/