[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Iterate over array and add numbers of each object

Joshua Muheim

10/3/2008 12:18:00 PM

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
--
Posted via http://www.ruby-....

5 Answers

Stefano Crocco

10/3/2008 12:22:00 PM

0

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


James Coglan

10/3/2008 12:24:00 PM

0

[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 }

Farrel Lifson

10/3/2008 12:26:00 PM

0

2008/10/3 Joshua Muheim <forum@josh.ch>:
> 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
--
Aimred - Ruby Development and Consulting
http://www....

Lloyd Linklater

10/3/2008 12:50:00 PM

0

Is that an echo I hear? :)
--
Posted via http://www.ruby-....

Erik Veenstra

10/3/2008 4:53:00 PM

0

require "facets"

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

gegroet,
Erik V.