红宝石填充阵列

时间:2015-04-06 17:22:53

标签: ruby padding

当我从我的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}在我的数组输入的末尾添加新元素。谢谢!

1 个答案:

答案 0 :(得分:3)

您的非破坏性版本实际上具有破坏性。你想要的可能就是:

def pad(array, min_size, value = nil)
  pad!(array.clone, min_size, value)
end

两次实施相同的行为毫无意义。将一座桥梁从另一座桥上移开。