def peel array
output = []
while ! array.empty? do
output << array.shift
mutate! array
end
output.flatten
end
我没有包括变异!方法,因为我只对删除输出变量感兴趣。变种人!call 很重要,因为我们不能使用 each 遍历数组,因为数组正在改变。
编辑:我得到一个数组作为输出,这就是我想要的。该方法可以正常工作,但我认为有一种方法可以在array.shift
不使用临时变量的情况下收集值。
编辑#2:好的,这里是变异!方法和测试用例:
def mutate! array
array.reverse!
end
a = (1..5).to_a
peel( a ).should == [ 1, 5, 2, 4, 3 ]
peel
修改数组没关系。我想应该叫它peel!
。是的,mutate!
必须在删除每个元素后调用。