mah*_*ich 1 ruby hash ruby-on-rails
我有这样的代码(我经常遇到这种方法签名,我来自java的noob):
def totals
t = 0
@data.each do |k, v|
t += v['totals'].to_i
end
t
end
Run Code Online (Sandbox Code Playgroud)
@data是散列的散列,每个内部散列值都有一个totals键.如你所见,我总结了所有的总数.
这可以简化或以不同的风格编程(我确定!这是RUBY毕竟)?为什么我需要实例化t?如果没有t最后的条件,我不能直接从每个循环返回吗?
它只是感觉不干净!等一下!我只记得街区,但我会等你的答案......
更新:
数据结构如下:
{ typeA: { items: [], totals: "10" }, typeB: { items: [], totals: "23" }}
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails!因此,如果Rails特定的函数超出了vanilla Ruby堆栈,它们也会很棒!
既然您已经表明使用的是Ruby on Rails,那么您可以利用Active Support的Enumerable#sum方法:
def totals
@data.sum {|_,v| v['totals'].to_i }
end
Run Code Online (Sandbox Code Playgroud)