Ruby将嵌套键添加到现有哈希

时间:2015-07-29 21:17:43

标签: ruby-on-rails ruby

我坚持看似非常简单的问题。

如果我有一个交易数组[#<payer: "Robert", dollar: 100, cent: 10>]

totals = Hash.new(0)
transactions.each do |t|
  totals[t.payer] += t.dollar
end
totals

上面的代码将返回{"Robert"=>100}。我正在寻找的是更接近{"Robert" => { dollar: 100 }}

的东西

所以我尝试了

totals = Hash.new(0)
transactions.each do |t|
  totals[t.payer][:dollar] += t.dollar
end
totals

但这会返回no implicit conversion of Symbol into Integer错误。如果我将[:dollar]更改为["dollar"],则会返回no implicit conversion of String into Integer

我问题的根源是什么?

1 个答案:

答案 0 :(得分:2)

您将哈希条目初始化为if(getSupportActionBar() != null) { getSupportActionBar().setElevation(0); } 。您无法将数字0编入索引。

如果您希望散列中的值是一个对象,那么您应该让每个散列条目成为新的散列0,其中一种方式是:

{ dollar: 0 }