我知道,为了在Ruby中对数组元素求和,可以使用inject方法,即.

array = [1,2,3,4,5];
puts array.inject(0, &:+) 

但是,如何对对象数组中对象的属性求和,例如.?

有一个对象数组,每个对象都有一个属性"cash".所以我想把他们的现金余额加起来.比如...

array.cash.inject(0, &:+) # (but this doesn't work)

我意识到我可能可以制作一个新的数组,只包含财产现金和总和,但如果可能的话,我正在寻找一个更干净的方法!

推荐答案

array.map(&:cash).inject(0, &:+)

array.inject(0){|sum,e| sum + e.cash }

Ruby相关问答推荐

如何修复 '535-5.7.8 用户名和密码未被接受.在 Devise 邮件确认错误中了解更多信息?

使用 Ruby,我如何访问和比较这些嵌套的数组值?

在 clojure 中,如何将已排序整数数组划分为连续的分区?

每秒做某事 x 次

在 ruby​​ 中提取文档中的主题标签和部分

如何使用 define_method 指定方法默认参数?

Ruby 中的yield关键字有什么作用?

C# 中的 typeof 保留字是否有 Ruby 类似功能?

Ruby 是否提供了一种使用指定编码执行 File.read() 的方法?

哈希或其他对象的内存大小?

Ruby on Rails 中是否有简写 if(没有 else)语句?

如何正确截断表格?

将字符串与多个模式匹配

读取文件时如何避免 UTF-8 BOM

带有可选参数的方法

使用 `?`(问号)在 Ruby 中获取 ASCII 字符代码失败

Ruby 模板:如何将变量传递到内联 ERB?

如何使用密码保护我的 /sidekiq 路由(即需要对 Sidekiq::Web 工具进行身份验证)?

获取当前 ruby​​ 进程内存使用情况

为什么表达式 (true == true == true) 会产生语法错误?