地图,每个和收集有什么区别?
在Ruby中, each , map和collect的function是否有区别?
each都不同于map和collect ,但map和collect是相同的(技术上map是collect的别名,但在我的经验map使用更频繁)。
( Enumerable )接收器中的每个元素each执行封闭的块:
[1,2,3,4].each {|n| puts n*2} # Outputs: # 2 # 4 # 6 # 8
map并collect产生一个新的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]