为什么Array#每个都返回一个具有相同元素的数组?

我正在学习each如何在ruby中工作的细节,我尝试了以下代码行:

 p [1,2,3,4,5].each { |element| el } 

结果是一个数组

 [1,2,3,4,5] 

但我不认为我完全理解为什么。 为什么each相同数组的返回值? 难道每个都不提供迭代方法吗? 或者, each方法返回原始值只是通常的做法?

Array#each返回调用它的[array]对象:块的结果被丢弃 。 因此,如果原始arrays没有任何不良副作用,那么一切都不会改变。

也许你的意思是使用map

 p [1,2,3,4,5].map { |i| i*i } 

每个arrays#

Array#的块forms返回原始的Array对象。 当您想要对块内的数组的每个元素执行某些操作时,通常使用#each。 例如:

 [1, 2, 3, 4, 5].each { |element| puts element } 

这将打印出每个元素,但返回原始数组。 您可以通过以下方式validation:

 array = [1, 2, 3, 4, 5] array.each { |element| element }.object_id === array.object_id => true 

arrays#地图

如果要返回数组,则需要使用Array#map或其中一个同义词。 #map的块forms返回不同的Array对象。 例如:

 array.object_id => 25659920 array.map { |element| element }.object_id => 20546920 array.map { |element| element }.object_id === array.object_id => false 

当您想要对原始数组的修改版本进行操作时,通常需要使用#map,同时保持原始数据不变。

所有方法都返回了一些 即使它只是一个nil对象,它也会返回一些东西。

它也可以返回原始对象而不是返回nil

Interesting Posts