What is the difference between map, each, and collect? [duplicate]

In Ruby, is there any difference between the functionalities of each, map, and collect?

0

2 Answers

each is different from map and collect, but map and collect are the same (technically map is an alias for collect, but in my experience map is used a lot more frequently).

each performs the enclosed block for each element in the (Enumerable) receiver:

[1,2,3,4].each {|n| puts n*2} # Outputs: # 2 # 4 # 6 # 8 

map and collect produce a new Array containing the results of the block applied to each element of the receiver:

[1,2,3,4].map {|n| n*2} # => [2,4,6,8] 

There's also map! / collect! defined on Arrays; they modify the receiver in place:

a = [1,2,3,4] a.map {|n| n*2} # => [2,4,6,8] puts a.inspect # prints: "[1,2,3,4]" a.map! {|n| n+1} puts a.inspect # prints: "[2,3,4,5]" 
1

Each will evaluate the block but throws away the result of Each block's evaluation and returns the original array.

irb(main):> [1,2,3].each {|x| x*2} => [1, 2, 3] 

Map/collect return an array constructed as the result of calling the block for each item in the array.

irb(main):> [1,2,3].collect {|x| x*2} => [2, 4, 6] 

You Might Also Like