我理解这个 skip_tracks 方法中发生了什么,但是,我永远不可能这样写,因为我不理解块中行为背后的规则。这是让我困惑的部分
skip.times { playlist.push playlist.shift}
是否存在从右到左执行的规则,以便返回移动的值并将其推送到播放列表?怎么知道被转移的值将被推送到播放列表中?块内发生了什么以使其成为规则?你能解释一下吗...另外,如果这个块被写成多行,playlist.push 将在 playlist.shift 之上,因此首先执行,但是这段代码要求在 push 之前移动值
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)