使用each_with_index并为新数组添加具有相应索引的值

时间:2015-02-21 23:15:49

标签: ruby-on-rails ruby arrays loops indexing

这里有红宝石新手。我需要使用each_with_index函数来创建一个新数组,该数组将值添加到其相应的索引中。以下是我认为的解决方案,但当然,它不起作用。我确信即使打印这些值的'p'也是不必要的。

def add_value_and_index(a)
  a.each_with_index do |value, index|
    p #{value} + #{index}"
  end
end

这是规格:

describe '#add_value_and_index' do
  it "returns a new array composed of the value + index of each element in the former" do
    expect( add_value_and_index([2,1,0]) ).to eq([2,2,2])
  end
end

1 个答案:

答案 0 :(得分:1)

您可以使用map准确地返回结果:

def add_value_and_index(array)
  array.map.with_index { |value, index| value + index }
end

如果课程尚未使用map,您可以创建一个新数组并在每次迭代中添加总和:

def add_value_and_index(array)
  result = []
  array.each_with_index { |value, index| result << value + index }
  result
end

我不会在制作中使用第二个例子,因为它很冗长且难以阅读。