Ruby——将散列解压缩到参数列表中

标签 ruby rspec hashmap parameter-passing

问题

我怎么转

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/

相关文章:

arrays - 如何从哈希数组中过滤掉哈希?

arrays - 如何在 ruby​​ 数组中仅添加正数?

ruby - 由于 Nginx 是基于事件的服务器,Sleep 会停止 Nginx 吗?

ruby-on-rails - Rails file_field 未上传图像

ruby-on-rails - 我在哪里确认使用 FactoryGirl 创建的用户?

Java HashMap 获取值(哪个值最多)

ruby-on-rails - iframe 内容的 Rspec 测试

ruby-on-rails - 如何测试 Rails API 应用程序?

java - 根据值对 Map 内的 HashMap 进行排序

java - c++和java中map对象的最大大小是多少?