ruby 填充数组

ruby padding an array

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

你的非破坏性版本实际上是破坏性的。你想要的大概是这样的:

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

两次实施相同的行为没有意义。架起一座桥。