可能重复:
Array#each与Array #map
ruby-1.9.2-p180 :006 > ary = ["a", "b"]
=> ["a", "b"]
ruby-1.9.2-p180 :007 > ary.map { |val| p val }
"a"
"b"
=> ["a", "b"]
ruby-1.9.2-p180 :008 > ary.each { |val| p val }
"a"
"b"
=> ["a", "b"]
ruby-1.9.2-p180 :009 > ary.map { |val| val << "2" }
=> ["a2", "b2"]
ruby-1.9.2-p180 :010 > ary.each { |val| val << "2" }
=> ["a22", "b22"]
Run Code Online (Sandbox Code Playgroud)
Dig*_*oss 52
的副作用是它增加了一些混乱的逆向工程相同.
是的,两者都遍历数组(实际上,任何混合在Enumerable中的东西)但map会返回一个由块结果组成的数组,而每个数组只返回原始数组.Ruby代码中很少使用每个的返回值,但map是最重要的功能工具之一.
顺便说一下,您可能很难找到文档,因为map是Enumerable中的一个方法,而每个(Enumerable模块所需的一个方法)是Array中的方法.
作为一个琐事说明:地图实施基于每个.
API docs中的定义:each:为self中的每个元素调用一次,将该元素作为参数传递.map:为self的每个元素调用一次block.创建一个包含块返回的值的新数组.
所以每个都是一个正常的循环,它遍历每个元素并调用给定的块
map通常用于您希望另一个数组通过某个逻辑映射到现有数组的位置.您也可以将方法作为参考传递给map函数
[1,2,3].map(&:to_s)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45310 次 |
最近记录: |