我很难理解Array类中的shift和unshift方法在Ruby中的作用。有人可以帮我理解他们做了什么吗?
答案 0 :(得分:86)
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"]
答案 1 :(得分:48)
shift
和unshift
的行为方式与pop
和push
类似:它们的意思是使用数组作为堆栈,您可以追加和删除元素(通常是一个每次)。区别在于shift
和unshift
在Array
的开头添加/删除元素,实际上转移所有其他元素,而{{1} }和pop
在push
的末尾添加/删除元素,以便保留其他元素的索引。
示例:
Array
答案 2 :(得分:8)
它抓取第一个元素,将其从数组中删除,然后返回删除的元素。它基本上是一种将数组视为堆栈的方法:shift
是pop,unshift
是push。
答案 3 :(得分:2)
如果您认为数组就像要处理的值队列一样,那么您可以获取下一个(前)值并“移动”另一个值以占用可用空间。 unshift将值重新放入 - 也许你还没准备好处理它们中的一些,或者让一些后来的代码处理它们。
答案 4 :(得分:1)