地图,每个和收集有什么区别?

在Ruby中, eachmapcollect的function是否有区别?

each都不同于mapcollect ,但mapcollect是相同的(技术上mapcollect的别名,但在我的经验map使用更频繁)。

Enumerable )接收器中的每个元素each执行封闭的块:

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

mapcollect产生一个新的Array其中包含应用于接收器的每个元素的块的结果:

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

还有map! / collect!Array s上定义; 他们修改接收器:

 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]" 

Each将评估块,但扔掉Each块的评估结果,并返回原始数组。

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

Map / collect返回一个数组,其构造方式是调用数组中每个项的块。

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