私にとって、より良い方法は考えられませんでしたが、あると信じています。次のメソッドの実装を行うルビーの方法(意味:エレガントな方法)はありますか?
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 にする必要はないように思えるかもしれませんが、配列が空の場合はこの初期値を返します。
2 番目のアプローチ:
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