将以前的值添加到每个哈希值

Sel*_*wwa -1 ruby hash

我有一个带整数值的哈希:

h = {
  a: 1,
  b: 1,
  c: 1,
  d: 2,
  e: 2,
}
Run Code Online (Sandbox Code Playgroud)

我需要添加100第一个值,对于第二个值和on,我需要将前面的值添加到原始值中以获得:

{
  a: 101,
  b: 102,
  c: 103,
  d: 105,
  e: 107,
}
Run Code Online (Sandbox Code Playgroud)

有没有一个很好的方法来实现这一目标?

Ste*_*fan 6

您可以inject用来计算总和:

h = { a: 1, b: 1, c: 1, d: 2, e: 2}

h.inject(100) { |s, (k, v)| s + v }
#=> 107
Run Code Online (Sandbox Code Playgroud)

在这样做的同时,您还可以设置哈希值以获得累积总和:

h.inject(100) { |s, (k, v)| h[k] = s + v }

h #=> {:a=>101, :b=>102, :c=>103, :d=>105, :e=>107}
Run Code Online (Sandbox Code Playgroud)