为什么我要打印两次对象?
当我在irb或rails中创build一个迭代,我得到整个结构打印再次在我的terminal或浏览器内。 例:
 a = [1,2,3,4] a.each do |number| puts n end 
在irbterminal或浏览器内的结果:
 1 2 3 4 => [1,2,3,4] 
 为什么这个=> [1,2,3,4]出现在浏览器内部? 我无法在页面中创build单个列表,因为整个结构都显示出来了。 
  Ruby中的每个expression式都返回一个值; 在irb ,刚刚执行的expression式返回的值显示在=> 。 
  Enumerable::each的返回值是调用each的对象 – 在本例中是数组[1,2,3,4] 
 你看他们打印两次:一次作为副作用 ,第二次作为返回值 。  irb总是puts最后的返回值。  each的返回值是它的接收器。 使用irb时,你不能避免这种情况,但是当你将脚本作为独立软件运行时,它们不会显示出来。  First 1 ,…, 4是你的puts的产出。 他们被称为副作用。 
因为ruby甚至返回一切块。 所以你的每一个陈述都回来了。 你看到它的输出,因为irb显示你所有的回报。 在脚本中只会输出一次。
 在irb外面运行,你会开悟的。 
 ruby -e `[1,2,3,4].each {|ele| puts ele}`