ruby-on-rails - Ruby 重构哈希循环方法返回

标签 ruby-on-rails ruby hash

我有这样的代码(我经常遇到这种方法签名,我来自 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/

相关文章:

ruby-on-rails - 如果能?在 Ruby on Rails 中

ruby - 为什么用ruby查找带有所需文本的节点比使用xpath更快?

ruby-on-rails - 如何在haml中渲染tinymce编辑器内容?

mysql - 将 'crypto'模块生成的哈希值保存到mysql

function - 在 Clojure 中传递方法名称以进行评估的惯用方法?

ruby-on-rails - 权威 headless 政策

ruby-on-rails - Ruby 1.9 中的主要语法变化是什么?

algorithm - 增加md5输出的长度

jQuery 字符计数 onkeyup 在剩余 0 时显示 1 个字符

ruby-on-rails - 使用 RVM 为不同的 Ruby 版本编译 Passenger Native 支持