In much of my code, I’ve built an Array object before a block for
scope reasons. Is this common practice?
b = %w|a b c d e|
a = [] #instantiation
b.each {|i| a << i*2}
puts a
Todd
In much of my code, I’ve built an Array object before a block for
scope reasons. Is this common practice?
b = %w|a b c d e|
a = [] #instantiation
b.each {|i| a << i*2}
puts a
Todd
You can usually use inject or collect to eliminate the a = [] line.
For example:
b = %w[a b c d e]
a = b.collect {|i| i * 2 }
Also, I would caution against using the variable i as anything but a
loop counter.
Regards,
Dan
On Thu, Mar 20, 2008 at 6:14 PM, Daniel F. [email protected]
wrote:
You can usually use inject or collect to eliminate the a = [] line.
For example:b = %w[a b c d e]
a = b.collect {|i| i * 2 }
Unless you have a method that doesn’t return an array (i.e. something
other than map/collect). Sometimes you have to build the array inside
the iterator. I was just wondering if this was common practice.
Also, I would caution against using the variable i as anything but a
loop counter.
For production code, I agree. But, I think even then, I wouldn’t use
“i”.
Todd
On 21.03.2008 08:14, Todd B. wrote:
On Thu, Mar 20, 2008 at 6:14 PM, Daniel F. [email protected] wrote:
You can usually use inject or collect to eliminate the a = [] line.
For example:b = %w[a b c d e]
a = b.collect {|i| i * 2 }Unless you have a method that doesn’t return an array (i.e. something
other than map/collect). Sometimes you have to build the array inside
the iterator. I was just wondering if this was common practice.
Yes, that’s perfectly ok. Often you can also use a variant using
#inject, like
irb(main):003:0> b = %w[a b c d e]
=> [“a”, “b”, “c”, “d”, “e”]
irb(main):004:0> b.inject([]){|ar,el| ar << el*2}
=> [“aa”, “bb”, “cc”, “dd”, “ee”]
But that would be silly in this case since there is #map / #collect.
Kind regards
robert
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