【问题标题】:What is the difference between `each` and `map` enumerators? [duplicate]`each` 和 `map` 枚举器有什么区别? [复制]
【发布时间】:2013-05-08 06:09:17
【问题描述】:

检查以下代码

[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。这两个枚举器有什么区别吗?

【问题讨论】:

  • @Ian 同意,对此感到抱歉。
  • 没问题。我刚刚发现一个与您的问题基本相同的问题,所以我想我会指出来:)

标签: ruby


【解决方案1】:

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

[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 的存在是为了获取一个类型的数组并将其转换为不同类型的数组,每个存在只是为了简单地迭代数组(对每个元素做一些具有副作用的事情,例如打印出来)。

【讨论】:

    猜你喜欢
    • 2012-03-14
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多