【问题标题】:What is the difference between map, each, and collect? [duplicate]map、each 和 collect 有什么区别? [复制]
【发布时间】:2012-03-14 19:14:41
【问题描述】:

在 Ruby 中,eachmapcollect 的功能有什么区别吗?

【问题讨论】:

    标签: ruby enumerable


    【解决方案1】:

    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]
    

    【讨论】:

      【解决方案2】:

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

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

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

      Arrays 上还定义了map! / collect!;他们修改了接收器:

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

      【讨论】:

      猜你喜欢
      • 2013-03-28
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 2016-12-24
      • 2011-09-30
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多