Ruby的Array#转换是做什么的?

我很难理解Ruby中的Array类的移位和非移位方法。 有人能帮我理解他们做什么吗?

看看Ruby文档

Array.shift从数组中移除第一个元素并返回它

 a = [1,2,3] puts a.shift => 1 puts a => [2, 3] 

不移位将提供的值前置到数组的前面,将所有其他元素向上移动一个

 a=%w[bcd] => ["b", "c", "d"] a.unshift("a") => ["a", "b", "c", "d"] 

按照poppush类似的方式shiftshift行为:它们意味着使用数组作为堆栈,您可以添加和移除元素(通常每次一个)。 不同之处在于,在Array开始处shift和不shift添加/移除元素,实际移动所有其他元素,同时poppush Array末尾的添加/移除元素,从而保留其他元素的索引。

例子:

 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是popup的,不shift是推动。

如果你可以把数组想象成一个要处理的值的队列,那么你可以取下一个(前)值,并“移动”另一个值来占用可用的空间。 unshift将值放回 – 也许你还没有准备好处理其中的一些,或者让稍后的代码处理它们。

它返回数组的第一个元素,并将其从数组中移除, 元素回到一个地方。

所以将[1,2,3,4,5]

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

更多在这里 。