对我来说,我想不出更好的方法,但我相信有一个。是否有一种红宝石方式(意思是:优雅的方式)来执行以下方法实现?
def total(items)
sum = 0
items.each do |item|
sum += item.value
end
sum
end
对我来说,我想不出更好的方法,但我相信有一个。是否有一种红宝石方式(意思是:优雅的方式)来执行以下方法实现?
def total(items)
sum = 0
items.each do |item|
sum += item.value
end
sum
end
items.inject(0) { |memo,item| memo + item.value }
似乎不需要将 0 作为初始值,但如果数组为空,它将返回此初始值。
第二种方法:
items.map(&:value).inject(0,:+)
例如,您可以这样做
items.reduce{|sum, el| sum + el.value}
def total(items)
items.inject(0) do |total, item|
total + item.value
end
end