Ruby 地图只是一个更强大的工具吗?
如果您想要一个不修改数组而收集数组的方法,您可以使用Ruby 地图只是一个更强大的工具吗?,ruby,Ruby,如果您想要一个不修改数组而收集数组的方法,您可以使用map,并且您将拥有与每个相同的功能。例如,您可以这样做: array.each do |x| x += 10 print "#{x}" end 但你也可以轻松做到这一点: array.map{|x| print (x + 10).to_s} 这将产生完全相同的结果。虽然每个只能这样做,映射可以使用更改其功能,所以我不明白为什么我会再使用每一个。如果map似乎更通用,你能解释一下为什么我应该使用each而不是map;使用map进行(
map
,并且您将拥有与每个相同的功能。例如,您可以这样做:
array.each do |x|
x += 10
print "#{x}"
end
但你也可以轻松做到这一点:
array.map{|x| print (x + 10).to_s}
这将产生完全相同的结果。虽然每个
只能这样做,映射
可以使用更改其功能代码>,所以我不明白为什么我会再使用每一个
。如果map
似乎更通用,你能解释一下为什么我应该使用each
而不是map
;使用map
进行(无副作用)转换
同时,它们都迭代了应该使用的可枚举项(在某个点1)。说map
是一个更强大的每个就像说一个返回未使用值的方法比一个不返回值的方法更强大-这不是因为它更强大,而是关于使用正确的工具
因此,虽然map
可以“做”每个所做的事情(通过评估提供的块),但它做得更多,并且对不同的任务有用:当需要转换而不是副作用时。在映射中执行副作用通常被认为是不好的做法(可能不包括映射对象的突变)
1此外,map
和每一种都不能严格互换。在懒惰和渴望的情况下,一个转换如。(不可能每个
都是惰性的,因为没有结果序列可以“观察”并在以后强制计算。)map
是一种函数编程习惯用法,在这种习惯用法中,您可以“映射”一个函数,或者在Ruby的情况下,将一个块映射到一个对象上,然后返回一个新对象。