Ruby + =赋值运算符

时间:2014-02-05 17:49:02

标签: ruby

foo = [10,20,30,40,50,60]
foo_total = 0
foo.each do |f|
 print foo_total += f
end
print foo_total

此代码示例的输出为10 30 60 100 150 210 210,但我实际上正在寻找10 20 30 40 50 60 210 我知道可以使用以下代码

来实现
foo = [10,20,30,40,50,60]
foo_total = 0
foo.each do |f|
 print f
 foo_total += f
end
print foo_total

但是,是否有更优雅的方法只需要foo.each块中的一行?

编辑:它不仅关于输出,还关于变量foo_total包含foo中所有值的总和

2 个答案:

答案 0 :(得分:1)

执行以下操作

(arup~>~)$ pry --simple-prompt
>> foo = [10,20,30,40,50,60]
=> [10, 20, 30, 40, 50, 60]
>> foo.push(foo.inject(:+))
=> [10, 20, 30, 40, 50, 60, 210]
>> 

答案 1 :(得分:1)

怎么样:

foo.each do |f|
  foo_total += f.tap { |f1| print f1 }
end
相关问题