def peel array
output = []
while ! array.empty? do
output << array.shift
mutate! array
end
output.flatten
end
私は変異を含めていません!出力変数の削除のみに関心があるためです。突然変異!配列が変化しているため、 each を使用して配列を反復処理できないため、呼び出しは重要です。
編集:出力として配列を取得しています。これが必要です。array.shift
メソッドは正しく機能しますが、一時変数を使用せずに値を収集する方法があると思います。
編集 #2: OK、これが mutate です! メソッドとテストケース:
def mutate! array
array.reverse!
end
a = (1..5).to_a
peel( a ).should == [ 1, 5, 2, 4, 3 ]
peel
配列を変更しても問題ありません。と呼ぶべきだと思いますpeel!
。はい、mutate!
各要素が削除された後に呼び出す必要があります。