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

Jef*_*rey 19 ruby arrays each self

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

p [1,2,3,4,5].each { |element| el }
Run Code Online (Sandbox Code Playgroud)

结果是一个数组

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

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

小智 24

Array#each返回它被调用的[array]对象:块的结果被丢弃.因此,如果没有恶心的副作用原来的数组,那么什么都不会发生变化.

也许你的意思是使用map

p [1,2,3,4,5].map { |i| i*i }
Run Code Online (Sandbox Code Playgroud)

  • 我没有尝试使用 map,只是想知道为什么返回值是同一个数组。但是你已经确认它只是返回相同的对象 (2认同)

Mar*_*eas 6

如果您出于某种原因想要抑制输出(例如在控制台中调试),则可以通过以下方法实现

  [1,2,3,4,5].each do |nr|
    puts nr.inspect
  end;nil
Run Code Online (Sandbox Code Playgroud)

  • 天哪,“end;nil”是我一生都在寻找的东西! (6认同)