我知道在Ruby中,要对数组元素求和可以使用inject方法,例如:
array = [1,2,3,4,5];
puts array.inject(0, &:+)
但是如何对对象数组中的属性进行求和呢?
假设有一个对象数组,每个对象都有一个"cash"属性。我想把它们的现金余额加起来得出总数。类似于以下代码...
array.cash.inject(0, &:+) # (but this doesn't work)
我意识到我可能可以创建一个仅由现金属性组成的新数组并对其求和,但如果可能的话,我正在寻找一种更清洁的方法!
array
被遍历两次,可能不是一个好主意。为什么不为inject
使用一个适当的块呢?而且reduce/inject
可以直接接受符号作为参数,不需要使用Symbol#to_proc
:-) - Michael Kohlarray.inject(0) { |sum, e| sum + e.cash }
。 - tokland