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 关注
- 556 浏览
添加回答
举报