`each`和`map`枚举器有什么区别?

时间:2013-05-07 21:13:23

标签: ruby

检查以下代码

[1,2,3,4].map # => #<Enumerator: [1, 2, 3, 4]:map> 
[1,2,3,4].each # => #<Enumerator: [1, 2, 3, 4]:each> 

我们可以看到两者都是枚举器。一个是map,另一个是each。方法to_enum还会返回枚举器each。这两位普查员之间有什么区别吗?

1 个答案:

答案 0 :(得分:2)

是的,当您遍历地图枚举器时,它将获取结果并将其填充到新数组中:

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

当您遍历每个枚举器时,它将返回原始数组

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

Map存在以获取一种类型的数组并将其转换为不同类型的数组,每个数组都存在以简单地遍历数组(对每个元素执行具有副作用的事情,例如将其打印出来)。 / p>