.map在下面做什么:
params = (0...param_count).map
.map在下面做什么:
params = (0...param_count).map
当前回答
0 . .Param_count表示“直到并包括Param_count”。 0…Param_count表示“直到但不包括Param_count”。
Range#map并不返回一个Enumerable,它实际上是将它映射到一个数组。它与Range#to_a相同。
其他回答
它将一个函数“映射”到Enumerable中的每个项——在本例中是一个范围。因此,对于从0到param_count的每一个整数,它都会调用传递一次的块(exclusive -关于点,您是对的),并返回一个包含每个返回值的数组。
下面是Enumerable#map的文档。它还有一个别名collect。
对于任何需要形象化的人来说:
完整的故事如下:
https://richstone.io/rubys-map-collect-methods-explained-visually/
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}
#每一个
#each为数组中的每个元素运行一个函数。以下两个代码摘录是等价的:
x = 10
["zero", "one", "two"].each{|element|
x++
puts element
}
x = 10
array = ["zero", "one", "two"]
for i in 0..2
x++
puts array[i]
end
#map
#map对数组的每个元素应用一个函数,返回结果数组。以下是等价的:
array = ["zero", "one", "two"]
newArray = array.map{|element| element.capitalize()}
array = ["zero", "one", "two"]
newArray = []
array.each{|element|
newArray << element.capitalize()
}
#地图!
#地图!类似于#map,但在适当的位置修改数组。以下是等价的:
array = ["zero", "one", "two"]
array.map!{|element| element.capitalize()}
array = ["zero", "one", "two"]
array = array.map{|element| element.capitalize()}