Distinct difference between collect and each? [duplicate] Distinct difference between collect and each? [duplicate] ruby ruby

Distinct difference between collect and each? [duplicate]


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:

array = [1, 2, 3]array2 = array.collect {|val| val + 1}array.inspect # => "[1, 2, 3]"array2.inspect # => "[2, 3, 4]"

And each like this:

array = [1, 2, 3]array.each {|val| puts val + 1 }# >> 2# >> 3# >> 4array.inspect # => "[1, 2, 3]"

Hope this helps...


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.