Ruby的数组#转移有什么作用?

时间:2010-09-15 14:31:07

标签: ruby

我很难理解Array类中的shift和unshift方法在​​Ruby中的作用。有人可以帮我理解他们做了什么吗?

5 个答案:

答案 0 :(得分:86)

查看Ruby Documentation

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)

shiftunshift的行为方式与poppush类似:它们的意思是使用数组作为堆栈,您可以追加和删除元素(通常是一个每次)。区别在于shiftunshiftArray的开头添加/删除元素,实际上转移所有其他元素,而{{1} }和poppush的末尾添加/删除元素,以便保留其他元素的索引。

示例:

Array

答案 2 :(得分:8)

它抓取第一个元素,将其从数组中删除,然后返回删除的元素。它基本上是一种将数组视为堆栈的方法:shift是pop,unshift是push。

答案 3 :(得分:2)

如果您认为数组就像要处理的值队列一样,那么您可以获取下一个(前)值并“移动”另一个值以占用可用空间。 unshift将值重新放入 - 也许你还没准备好处理它们中的一些,或者让一些后来的代码处理它们。

答案 4 :(得分:1)

它返回数组的第一个元素,并将其从数组中删除,将元素移回一个位置。

因此转移[1,2,3,4,5]

返回1,并将数组设置为[2,3,4,5]

更多here