当我从我的rspec文件运行代码时出现以下错误:
pad pads element to the end of an array
Failure/Error: expect(pad(array,array.length + pad_size, 'apple')).to eq(array+Array.new(pad_size, 'apple'))
expected: ["apple", "apple", "apple",...]
我目前的代码是:
def pad!(array, min_size, value = nil) #destructive
difference = min_size-array.length
difference.times {array << value}
array
end
def pad(array, min_size, value = nil) #non-destructive
difference = min_size-array.length
difference.times {array << value}
array.clone
end
任何人都可以帮我弄清楚为什么它会给我这个错误信息?我以为{array&lt;&lt; value}在我的数组输入的末尾添加新元素。谢谢!
答案 0 :(得分:3)
您的非破坏性版本实际上具有破坏性。你想要的可能就是:
def pad(array, min_size, value = nil)
pad!(array.clone, min_size, value)
end
两次实施相同的行为毫无意义。将一座桥梁从另一座桥上移开。