Ruby-unpack哈希到参数列表中

Mir*_*318 0 ruby rspec hashmap parameter-passing

我怎么转

arg2 = {a: "a", b: "b"}
method(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

进入这个:

method(arg1, a: "a", b: "b")
Run Code Online (Sandbox Code Playgroud)


背景


我正在尝试创建一个doublein RSpec,它接受这样的参数:

let(:dummy_obj) do
  [ double("my dummy object", name: "Mr. Jo", height: "10ft", etc) ]
end
Run Code Online (Sandbox Code Playgroud)

第一个arg是double对象的名称,之后你可以添加任意数量的键值对,这些键值对成为double的方法(例如dummy_obj.height()将返回"10ft").

我有一个我想要使用的巨大JSON哈希,其中JSON中的每个第一级字段都成为double中的方法.所以,我希望有一些类似的东西*array解压缩哈希中的每个项目,因为它是自己的哈希.

Jor*_*ing 5

这个:

method(arg1, a: "a", b: "b")
Run Code Online (Sandbox Code Playgroud)

与此相同:

method(arg1, { a: "a", b: "b" })
Run Code Online (Sandbox Code Playgroud)

{}当哈希是最后一个参数时,Ruby允许你省略花括号().

所以你的代码已经完全符合你的要求:

arg2 = { a: "a", b: "b" }
method(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)