Hi, I want to square every element in my array using a block:
a = (1…1000).to_a
a.each {|x| x**2}
But this does not seem to work, it just outputs my array completely
unchanged
Hi, I want to square every element in my array using a block:
a = (1…1000).to_a
a.each {|x| x**2}
But this does not seem to work, it just outputs my array completely
unchanged
Hi –
On Mon, 13 Feb 2006, Jeppe J. wrote:
Hi, I want to square every element in my array using a block:
a = (1…1000).to_a
a.each {|x| x**2}But this does not seem to work, it just outputs my array completely
unchanged
What you want is map, rather than each:
a.map {|x| x**2 }
each just returns the receiver (i.e., the array itself). map returns
a new array, composed of the results obtained by running the block
once for each item.
“collect” is a synonym for map.
David
–
David A. Black ([email protected])
Ruby Power and Light (http://www.rubypowerandlight.com)
“Ruby for Rails” chapters now available
from Manning Early Access Program! Ruby for Rails
The problem you’re seeing is that :each doesn’t do anything with the
return values of the block.
What you want is :map or :collect (or their destructive forms :map! or
:collect!).
Jeppe J. wrote:
The collect method will produce a new array:
a.collect {|x| x*x}
or, if you want to modify the original array, use collect!
Hi –
On Mon, 13 Feb 2006, Daniel N. wrote:
return values of the block.
What you want is :map or :collect (or their destructive forms :map! or
:collect!).
But probably the methods, not the like-named symbols
David
–
David A. Black ([email protected])
Ruby Power and Light (http://www.rubypowerandlight.com)
“Ruby for Rails” chapters now available
from Manning Early Access Program! Ruby for Rails
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs