Ruby - 对所有块变量应用方法

时间:2017-10-15 14:08:55

标签: ruby-on-rails ruby ruby-block

举个例子     sum = 0

2.times do |v1, v2, v3 , v4|
  v1 = FactoryGirl...
  v2 = FactoryGirl...
  ..
  v4 = ...
sum = 
end

现在总和我想添加一个属性的值,该块的每个对象都有它,例如

sum = v1[:nr_sales] + v2[:nr_sales] +...

有没有办法立即执行此操作(对块的所有args应用方法)?

1 个答案:

答案 0 :(得分:1)

块参数中接受Splat运算符:

break

因此,在您的情况下,您可以执行以下操作:

def foo
  yield 1, 2, 3, 4
end

foo { |*args| puts args.inject(:+) } #=> 10