def peel array
output = []
while ! array.empty? do
output << array.shift
mutate! array
end
output.flatten
end
我沒有收入mutate!方法,因爲我只想刪除輸出變量。變種!調用很重要,因爲我們無法遍歷數組,因爲數組正在改變。如何重構此代碼以刪除輸出變量?
編輯:我得到一個數組作爲輸出,這是我想要的。該方法工作正常,但我認爲有一種方法可以在不使用臨時變量的情況下收集array.shift
值。
編輯#2:好的,這裏是mutate!方法和測試用例:
def mutate! array
array.reverse!
end
a = (1..5).to_a
peel(a).should == [ 1, 5, 2, 4, 3 ]
如果peel
修改數組沒關係。我想它應該被稱爲peel!
。是的,每個元素被移除後必須調用mutate!
。
你在此刻變得作爲輸出,並且你要得到什麼? – dax
@dax意味着如果可以包含一些示例輸入和預期的相應輸出將會很有幫助,這樣我們就可以看到如何在不中斷功能的情況下簡化代碼。完整的代碼實際執行(一個簡單的例子)也可以幫助我們幫助你。 –
有太多的細節錯過能夠給出有價值的答案。原始數組是否被'peel'方法修改是重要的,還是僅僅是使用'shift'的一個無意的副作用?每個元素添加後調用mutate!是否很重要?它有什麼作用? –