地圖
由 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]
map
是 collect
的代名詞。