3 回答

TA貢獻1844條經驗 獲得超8個贊
Array#each 對數組的每個元素執行給定的塊,然后返回數組本身。
Array#map 也為數組的每個元素執行給定的塊,但返回一個新數組,其值是該塊每次迭代的返回值。
示例:假設您已經定義了一個數組:
arr = ["tokyo", "london", "rio"]
然后嘗試執行each:
arr.each { |element| element.capitalize }
# => ["tokyo", "london", "rio"]
注意,返回值只是同一數組。each塊中的代碼將被執行,但是不會返回計算出的值;并且由于代碼沒有副作用,因此該示例沒有做任何有用的工作。
相反,調用數組的map方法將返回一個新數組,其元素是執行該map塊的每一輪的返回值:
arr.map { |element| element.capitalize }
# => ["Tokyo", "London", "Rio"]

TA貢獻1831條經驗 獲得超4個贊
以下是有關地圖與每個地圖的區別的快速演示
a = ["a", "b", "c"];
#Array.map
p a.map {|item| "map_" + item}
#prints ["map_a", "map_b", "map_c"]
#Array.each
p a.each {|item| "map_" + item}
#prints ["a", "b", "c"]
您會看到map返回,["map_a", "map_b", "map_c"]而每個map 只是迭代但返回原始數組:["a", "b", "c"]。
因此,每個數組都用于處理數組,而map則用于處理數組。
- 3 回答
- 0 關注
- 595 瀏覽
添加回答
舉報