我有这样的代码(我经常遇到这种方法签名,我来自 java 的菜鸟):
def totals
t = 0
@data.each do |k, v|
t += v['totals'].to_i
end
t
end
@data
是哈希的哈希,每个内部哈希值都有一个 totals
键。如您所见,我正在汇总所有总数。
这是否可以简化或以不同的风格编程(我敢肯定!毕竟这是 RUBY)?为什么需要实例化t
?我不能在没有最后一个条件的情况下直接从每个循环返回 t
吗?
就是感觉不干净! 哦等等!我只记得积木,但我会等你的答案......
更新:
数据结构是这样的:
{ typeA: { items: [], totals: "10" }, typeB: { items: [], totals: "23" }}
我正在使用 Rails!因此,如果 Rails 特定功能扩展到普通 Ruby 堆栈之外,它们也会很棒!
最佳答案
既然您已经表明您正在使用 Ruby on Rails,那么您可以利用 Active Support 的 Enumerable#sum
方法:
def totals
@data.sum {|_,v| v['totals'].to_i }
end
关于ruby-on-rails - Ruby 重构哈希循环方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35201891/