Using arrays what's the main difference between collect and each? Preference?
some = []
some.collect do {|x| puts x}
some.each do |x| puts x end
Using arrays what's the main difference between collect and each? Preference?
some = []
some.collect do {|x| puts x}
some.each do |x| puts x end
collect
(or map
) will "save" the return values of the do block in a new array and return it, example:
some = [1,2,3,10]
some_plus_one = some.collect {|x| x + 1}
# some_plus_one == [2,3,4,11]
each
will only execute the do block for each item and wont save the return value.
array = []
is a shortcut to define an array object (long form: array = Array.new
)
Array#collect
(and Array#map
) return a new array based on the code passed in the block. Array#each
performs an operation (defined by the block) on each element of the array.
I would use collect like this:
irb(main):001:0> array = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> array2 = array.collect {|val| val + 1}
=> [2, 3, 4]
irb(main):005:0> array.inspect
=> "[1, 2, 3]"
irb(main):006:0> array2.inspect
=> "[2, 3, 4]"
And each like this:
irb(main):007:0> array = [1, 2, 3]
=> [1, 2, 3]
irb(main):008:0> array.each {|val| puts val + 1 }
2
3
4
=> [1, 2, 3]
irb(main):009:0> array.inspect
=> "[1, 2, 3]"
Hope this helps...