当我在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]
出现在浏览器中?我无法在页面中创建单个列表,因为整个结构都会出现。
答案 0 :(得分:3)
Ruby中的每个表达式都返回一个值;在irb
中,您刚刚执行的表达式返回的值显示在=>
之后。
Enumerable::each
的返回值是调用each
的对象 - 在本例中是数组[1,2,3,4]
答案 1 :(得分:0)
您会看到它们打印两次:一次作为副作用,第二次作为返回值。 irb总是puts
最后一个返回值。 each
的返回值是其接收者。使用irb时无法避免这种情况,但是当您将脚本作为独立软件运行时,它们将不会显示。第一个1
,...,4
是puts
的输出。它们被称为副作用。
答案 2 :(得分:0)
因为ruby在所有东西中都会返回。所以你的每个陈述都在回归。你看到它的输出是因为irb向你展示了一切的回报。在脚本中它只输出一次。
答案 3 :(得分:0)
在irb
之外运行,你就会受到启发。
ruby -e `[1,2,3,4].each {|ele| puts ele}`