我很难理解Ruby中数组类的shift和unshift方法是什么。有人可以帮忙解释一下吗?
查看Ruby文档
Array.shift会将数组的第一个元素移除并返回该元素。
a = [1,2,3]
puts a.shift
=> 1
puts a
=> [2, 3]
unshift() 将指定的值添加到数组开头,同时将原先的元素顺次后移一位。
a=%w[b c d]
=> ["b", "c", "d"]
a.unshift("a")
=> ["a", "b", "c", "d"]
shift
和unshift
的作用类似于FILO堆栈,而push
和shift
则会像FIFO队列一样运行,除非我对某些事情感到困惑。 - Greg Schmitshift
和 unshift
的用法与 pop
和 push
一样,它们被用于将数组作为栈使用,您可以在其中添加和删除元素(通常每次一个)。区别在于,shift
和 unshift
在 Array
的开头添加/删除元素,实际上移动其他所有元素,而 pop
和 push
在 Array
的末尾添加/删除元素,从而保留其他元素的索引。
示例:
# Spacing for clarity:
a = [2, 4, 8] # a => [2, 4, 8]
a.push(16, 32) # a => [2, 4, 8, 16, 32]
a.unshift(0, 1) # a => [0, 1, 2, 4, 8, 16, 32]
a.shift # a => [1, 2, 4, 8, 16, 32]
a.pop # a => [1, 2, 4, 8, 16]
它抓取第一个元素,从数组中删除它,并返回已删除的元素。基本上,它是一种将数组视为堆栈的方法:shift
是 pop
,unshift
是 push
。
shift/unshift
就像在数组的另一端的push/pop
,您可以在心里把这些方法名称中的 'f' 去掉,来记住哪种方法是 '删除' 元素,哪种是 '插入' 元素。 :) - Phrogzpush
它到顶部,然后从另一端shift
它出去。” - Phrogz