地圖

由 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 的代名詞。