Ruby删除数组的第一个索引

Ruby删除数组的第一个索引,ruby,arrays,Ruby,Arrays,我有一个数组。我需要将除元素之外的所有元素都保留在索引0处。我的大脑在这一点上是油炸的。我整天都在编程。任何帮助都将是惊人的。谢谢大家! 您可以使用数组索引切片: some_array[1..-1] 或者,如果要永久修改变量,请执行以下操作: some_array = [1,2,3,4] some_array.delete_at(0) # => 1 some_array # => [2,3,4] 使用该方法,它会完全满足您的要求: a=[1,2,3] a、 移位#=>1 a#=>

我有一个数组。我需要将除元素之外的所有元素都保留在索引0处。我的大脑在这一点上是油炸的。我整天都在编程。任何帮助都将是惊人的。谢谢大家!

您可以使用数组索引切片:

some_array[1..-1]
或者,如果要永久修改变量,请执行以下操作:

some_array = [1,2,3,4]
some_array.delete_at(0)
# => 1
some_array
# => [2,3,4]
使用该方法,它会完全满足您的要求:

a=[1,2,3]
a、 移位#=>1
a#=>[2,3]
切片怎么样

a=[“a”、“b”、“c”]

a、 切片!(0)#=>“a”

a#=>[“b”,“c”]


根据如何处理结果(移除第一个元素的数组),有不同的方法获得结果,以及如何使用结果可能会影响选择

一种方法是通过应用方法将原始数组更改为新数组,删除第一个元素,忽略该方法的结果,并由于应用方法的副作用而实现所需的结果。OP接受了这样一个答案(这意味着它在他的案例中起了作用):

如果您希望保留生成的数组,那么这样做很好,但您需要将某些方法放到现有方法链的中间,以便“除去第一个数组元素”。但是,在我的例子中,我有一个数组,其中第一个元素是由系统命令生成的标题行,然后是该命令输出的几行,每个数组元素中有一行,当我意识到需要删除标题行时,我正在修改这些行以获得我想要的结果,由于与其他行的形式不同,因此没有正确处理,也不需要。我的原始代码行看起来像这样(其中,
a
是数组):

我想这样做:

puts a.method1.method2.removeFirstElement.method3.method4
通过使用
slice
实现这一点的一种方法显示在不同的答案中,尽管没有明确说明在某些情况下如何比公认的答案更好:

puts a.method1.method2.slice(1..-1).method3.method4
如果我使用公认的答案,我将不得不这样做:

temp = a.method1.method2
temp.shift
puts temp.method3.method4
除了需要修改原始的代码结构(尽管根据所做的工作,有其利弊),还需要创建一个新的临时对象(“temp”)来获得结果

很高兴知道,我们前进的方向往往对如何到达那里有明确的影响


(我会注意到我几乎更喜欢使用
slice!(0)
代替
shift
实际更改数组,因为感叹号表明数组正在更改;
shift
方法不符合当前的建议,即向将更改对象的方法添加感叹号。但是,唉,无论如何,我可能会使用
shift
来避免乱七八糟的
(0)

我可以发誓我已经试过了。看起来很容易。我一定是打错了什么。感谢您提供了一个有趣(粗俗)的助记符,帮助您记住
shift
unshift
是否从数组中删除项目,请尝试从名称中删除“f”。)最好的记忆法是粗俗的。丑闻越多,它在你的脑海中就越牢固。
puts a.method1.method2.slice(1..-1).method3.method4
temp = a.method1.method2
temp.shift
puts temp.method3.method4