この skip_tracks メソッドで何が起こっているかは理解していますが、ブロック内の動作の根底にあるルールを理解していないため、このように書くことはできませんでした。これは私を困惑させている部分です
skip.times { playlist.push playlist.shift}
シフトされた値が返されてプレイリストにプッシュされるように、右から左に実行するというルールはありますか? シフトされた値がプレイリストにプッシュされることをどのように知ることができますか? これをルールにするために、ブロック内で何が起こっているのでしょうか? 説明してもらえますか...また、このブロックが複数行にわたって記述されていた場合、playlist.pushはplaylist.shiftの上にあるため、最初に実行されますが、このコードでは、プッシュする前に値をシフトする必要があります
def skip_tracks(playlist, skip)
if skip > 0
skip.times { playlist.push playlist.shift}
else
skip.abs.times { playlist.unshift playlist.pop }
end
puts playlist
end
playlist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
skip_tracks(playlist, 2)