• Ruby map, collect and select


    作为ruby的新手,我经常对Array的enumerators的三种方法感到困惑: map, collect 和 select。让我们通过一些例子来解决这个困惑。

    list = (1..10).to_a
     
    p list
    p list.collect { |i| i >= 3 && i <= 7 }
    p list.map { |i| i >= 3 && i <= 7 }
    p list.select { |i| i >= 3 && i <= 7 }
    

    结果

    结果

    所有的方法都有相似之处就是都用了一个block 参数,map和collect方法都返回了一个数组中的item通过计算返回的值,而select方法则返回了通过迭代数组中的item计算出的结果为true的值。

    这个例子还不能完全地解决区分map 和 collect,我们尝试另外一个例子

    class Person
      attr_accessor :name, :surname, :age
      def initialize(name,surname,age)
        @name, @surname, @age = name, surname, age
      end
    end
     
    people = []
    people << Person.new("Daniel","Craig",43)
    people << Person.new("Pierce","Brosnan",58)
    people << Person.new("Sean","Connery",81)
     
    p people.map { |p| p.surname }

    如果使用p people.collect { |p| p.surname}, 同样也会得到一样的结果,事实上,你去查看ruby 文档会发现map 和 collect都被当做rb_ary_collect 方法执行。

  • 相关阅读:
    PSP编程
    题库软件1.0发布
    ubuntu上安装netgear wg511v2驱动
    boost的编译
    Plot3D 0.3发布
    立体画板Plot3D
    求教团队内的朋友,在directx中,如何画虚线?
    OpenGL如何显示文本?
    JZ028数组中出现次数超过一半的数字
    JZ027字符串的排列
  • 原文地址:https://www.cnblogs.com/itmangelihai/p/3506109.html
Copyright © 2020-2023  润新知