地图

由 Enumerable 提供的 #map 通过在每个元素上调用一个块并收集结果来创建一个数组:

[1, 2, 3].map { |i| i * 3 }
# => [3, 6, 9]

['1', '2', '3', '4', '5'].map { |i| i.to_i }
# => [1, 2, 3, 4, 5]

原始数组未修改; 返回一个新数组,其中包含与源值相同顺序的转换值。如果要修改原始数组,可以使用 map!

map 方法中,你可以调用方法或使用 proc 来处理数组中的所有元素。

# call to_i method on all elements
%w(1 2 3 4 5 6 7 8 9 10).map(&:to_i)
# => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# using proc (lambda) on all elements
%w(1 2 3 4 5 6 7 8 9 10).map(&->(i){ i.to_i * 2})
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

mapcollect 的代名词。