Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 地图只是一个更强大的工具吗?_Ruby - Fatal编程技术网

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的情况下,将一个块映射到一个对象上,然后返回一个新对象。