0

当我在 irb 或 rails 中创建一些迭代时each,我会在终端或浏览器中再次打印整个结构。例子:

a = [1,2,3,4]

a.each do |number|
  puts n
end

irb 终端或浏览器中的结果:

1
2
3
4

=> [1,2,3,4]

为什么会=> [1,2,3,4]出现在浏览器中?我无法在我的页面中创建单个列表,因为整个结构都出现了。

4

4 回答 4

3

Ruby 中的每个表达式都返回一个值;在 中irb,你刚刚执行的表达式返回的值显示在 之后=>

的返回值Enumerable::each是调用的对象each- 在这种情况下,数组[1,2,3,4]

于 2013-01-16T16:45:41.687 回答
0

跑到外面去irb,你就会开悟。

ruby -e `[1,2,3,4].each {|ele| puts ele}`
于 2013-01-16T16:47:20.530 回答
0

您会看到它们打印了两次:一次作为副作用,第二次作为返回值。irb 总是puts最后一个返回值。的返回值each是它的接收者。使用 irb 时无法避免这种情况,但当您将脚本作为独立软件运行时,它们不会出现。第一个1,...,4是你的输出puts。它们被称为副作用。

于 2013-01-16T16:44:55.597 回答
0

因为红宝石会在所有内容中返回,甚至会阻塞。所以你的每一条语句都在返回。你看到它的输出是因为 irb 向你展示了一切的回报。在脚本中它只会输出一次。

于 2013-01-16T16:44:57.553 回答