Ruby对循环的每个索引值求和

时间:2018-11-01 19:38:34

标签: arrays ruby loops instance-variables

我有一个变量@ Variable = [],它在索引的每次迭代中都充满了拉姆登值,就像这样:

def whetever(array)
array.each_index {|i|
@variable=magic_ramdon_string_of_numbers_diferent_on_every_iteration
}
end

我想创建另一个数组,汇总@variable每次迭代的值

@variable值的示例:

i=0 @variable=[56,78,34,84]
i=1 @variable=[24,57,14,78]
i=2 @variable=[54,74,52,45]

这是我想要的:

sum_variable=[56,78,34,84,24,57,14,78,54,74,52,45]

2 个答案:

答案 0 :(得分:0)

我可以这样做:首先将sum_variable定义为一个空数组,然后在循环的每次迭代中将求和值附加到其中:

def whatever(array)
  sum_variable = []
  array.each_index do |i|
    @variable = magic_ramdon_string_of_numbers_diferent_on_every_iteration
    sum_variable << @variable.inject(:+)
  end
end

请注意,如果这是一个Rails应用程序,而不仅仅是香草红宝石,那么ActiveSupport还提供了方法Array#sum,您可以使用该方法代替.inject(:+)

答案 1 :(得分:0)

我会这样写:

def whetever(array)
  sum_variable = (0...array.size).flat_map do |i|
    magic_ramdon_string_of_numbers_diferent_on_every_iteration
  end
end

flat_map调用序列中每个元素的块以获取数组, 并返回所有串联在一起的结果数组。在这里,顺序 是范围0...array.size,它是数组索引,如果我们只是想 元素本身,例如array[i],我们可以只使用array.flat_map, 代替。