h  = { a: 1 }
h2 = { b: 2 }
h3 = { c: 3 }

散列#合并适用于2个散列:h.merge(h2)

如何合并3个哈希?

h.merge(h2).merge(h3)行,但有更好的方法吗?

推荐答案

你可以这样做:

h, h2, h3  = { a: 1 }, { b: 2 }, { c: 3 }
a  = [h, h2, h3]

p Hash[*a.map(&:to_a).flatten] #= > {:a=>1, :b=>2, :c=>3}

编辑:如果你有很多散列,这可能是正确的方法:

a.inject{|tot, new| tot.merge(new)}
# or just
a.inject(&:merge)

Ruby相关问答推荐

Ruby插值法导致无序输出

Ruby迭代器与函数.返回函数的第一个值,而不交互整个列表

RSpec 中有没有一种方法可以同时断言调用次数和参数列表?

何时在 Ruby 方法中使用 `self.foo` 而不是 `foo`

如何在 Sinatra 中解析 JSON 请求正文一次并将其公开给所有路由?

如何从 Ruby 中的线程返回值?

如何在没有 Web 服务器的情况下从命令行执行 ruby​​ 模板文件 (ERB)?

为什么 Matz Select 在 Ruby 中默认使字符串可变?

如何从 Gemfile 安装 gem?

Ruby 中数组和哈希的性能

Ruby 哈希默认值行为

为什么在 ruby​​ / rails / activerecord 中并不总是需要 self ?

铲子 (<<) 运算符如何在 Ruby 哈希中工作?

在 Ruby 中重写 to_s 方法不好吗?

如何从 Ruby 判断具有特定 pid 的进程是否正在运行?

如何在 RSpec 2 中自动加载 spec_helper.rb

运行 Ruby 命令时,PATH 中不安全的世界可写目录 /Users/username,模式 040777

找不到Bundle 命令 mac

如何删除已安装的 ri 和 rdoc?

从 'mm/dd/yyyy' 格式解析 ruby​​ DateTime