我是ruby的新手,我现在正在学习循环。我使用each_with_index方法返回元素在新数组中的值和位置。在这里,我创建了一个方法(称为add_value_and_index),该方法通过each_with_index方法,以便在新数组中返回值和位置(new_array)
def add_value_and_index(array)
new_array = []
new_array = array.each_with_index do |element, index|
p "#{element} is a position #{index}"
end
new_array
end
我得到" ExpectationsNotMet" RSPEC中的错误,上面的代码中缺少什么来通过测试?这是规格:
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
我得到的错误:
RSpec::Expectations::ExpectationNotMetError
expected: [2, 2, 2]
got: [2, 1, 0]
(compared using ==)
exercise_spec.rb:5:in `block (2 levels) in <top (required)>'
答案 0 :(得分:1)
您需要对元素及其索引求和,以便通过测试:
def add_value_and_index(array)
new_array = []
array.each_with_index do |element, index|
p "#{element} is a position #{index}"
new_array << element + index
end
new_array
end
另一种方法是使用map
:
def add_value_and_index(array)
array.map.with_index do |element, index|
element + index
end
end
add_value_and_index [2, 1, 0]
# => [2, 2, 2]