检查以下代码
[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
。这两位普查员之间有什么区别吗?
答案 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>