和...之间的不同Enumerable#each
and Enumerable#map
是它返回接收者还是映射结果。返回接收者是微不足道的,通常不需要在之后继续方法链each
like each{...}.another_method
(我可能没有见过这样的情况。即使你想回到接收者,你也可以这样做tap
)。所以我认为所有或大多数情况下Enumerable#each
使用可以替换为Enumerable#map
。我错了吗?如果我是对的,那么目的是什么each
? Is map
慢于each
?
Edit:
我知道有一个常见的做法可以使用each
当你对返回值不感兴趣时。我对这种做法是否存在不感兴趣,但感兴趣的是这种做法除了从惯例的角度来看是否有意义。
和...之间的不同map
and each
比一个是否返回新数组而另一个不返回更重要。重要的区别在于他们如何传达您的意图。
当你使用each
,你的代码说“我正在为每个元素做一些事情。”当你使用map
,您的代码显示“我正在通过转换每个元素来创建一个新数组。”
所以虽然你可以使用map
代替each
尽管性能良好,但该代码现在可能会向任何阅读它的人谎报其意图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)