Iterate over array and add numbers of each object

J

Joshua Muheim

Hi all

number = 0;
objects.each do |o|
number += o.some_number
end
return number

I guess there's a much more beautiful way for this, or isn't? Something
like collect or so...

Thanks :)
Josh
 
S

Stefano Crocco

Alle Friday 03 October 2008, Joshua Muheim ha scritto:
Hi all

number = 0;
objects.each do |o|
number += o.some_number
end
return number

I guess there's a much more beautiful way for this, or isn't? Something
like collect or so...

Thanks :)
Josh

If objects is an array, or any other thing which mixes-in the Enumerable
module, you can use inject:

objects.inject(0){|tot, o| tot + o.some_number}

Stefano
 
J

James Coglan

[Note: parts of this message were removed to make it a legal post.]
number = 0;
objects.each do |o|
number += o.some_number
end
return number

I guess there's a much more beautiful way for this, or isn't? Something
like collect or so...



number = objects.inject(0) { |sum, obj| sum + obj.some_number }
 
F

Farrel Lifson

2008/10/3 Joshua Muheim said:
Hi all

number = 0;
objects.each do |o|
number += o.some_number
end
return number

This is what inject is for.

number = objects.inject(0) do |sum,o|
sum += o.some_number
end

Farrel
 
E

Erik Veenstra

require "facets"

number = objects.map(&:some_number).sum

gegroet,
Erik V.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,566
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top