.map在下面做什么:

params = (0...param_count).map

当前回答

Map是可枚举模块的一部分。和“collect”非常相似。

  Class Car

    attr_accessor :name, :model, :year

    Def initialize (make, model, year)
      @make, @model, @year = make, model, year
    end

  end

  list = []
  list << Car.new("Honda", "Accord", 2016)
  list << Car.new("Toyota", "Camry", 2015)
  list << Car.new("Nissan", "Altima", 2014)

  p list.map {|p| p.model}

Map提供了通过块参数返回的数组迭代的值。

其他回答

0 . .Param_count表示“直到并包括Param_count”。 0…Param_count表示“直到但不包括Param_count”。

Range#map并不返回一个Enumerable,它实际上是将它映射到一个数组。它与Range#to_a相同。

使用ruby 2.4,你可以使用transform_values完成同样的事情,这个特性是从rails提取到ruby的。

h = {a: 1, b: 2, c: 3}

h.transform_values { |v| v * 10 }
 #=> {a: 10, b: 20, c: 30}

Map是可枚举模块的一部分。和“collect”非常相似。

  Class Car

    attr_accessor :name, :model, :year

    Def initialize (make, model, year)
      @make, @model, @year = make, model, year
    end

  end

  list = []
  list << Car.new("Honda", "Accord", 2016)
  list << Car.new("Toyota", "Camry", 2015)
  list << Car.new("Nissan", "Altima", 2014)

  p list.map {|p| p.model}

Map提供了通过块参数返回的数组迭代的值。

对于任何需要形象化的人来说:

完整的故事如下:

https://richstone.io/rubys-map-collect-methods-explained-visually/

它将一个函数“映射”到Enumerable中的每个项——在本例中是一个范围。因此,对于从0到param_count的每一个整数,它都会调用传递一次的块(exclusive -关于点,您是对的),并返回一个包含每个返回值的数组。

下面是Enumerable#map的文档。它还有一个别名collect。