删除一行中的第一个和最后一个数组元素?

时间:2014-02-22 19:34:13

标签: ruby

如何以巧妙的方式删除一行中的第一个和最后一个元素?

我试过了:

names = %w[Go Go Go Power Rangers Go]
names.shift.pop

此操作失败,因为我相信,shiftpop都会返回删除的值,然后将其传递给以下函数,从而引发错误。

我也尝试使用delete_at来完成这项工作,但它不允许使用数组参数,因此我不再需要将其作为单行程序。

有什么想法吗?

注意:我重视极简主义

4 个答案:

答案 0 :(得分:5)

_, *names, _ = %w[Go Go Go Power Rangers Go]
names #=> ["Go", "Go", "Power", "Rangers"]

或者,如果您已将整个数组作为names,那么:

names = %w[Go Go Go Power Rangers Go]
_, *names, _ = names
names #=> ["Go", "Go", "Power", "Rangers"]

答案 1 :(得分:3)

您可以使用names = names[1..-2],但不应该。只需使用names.pop; names.shift即可完成。

答案 2 :(得分:0)

这个怎么样?

names.slice!(1..-2)

真的,正如其他人所说的那样,没有错:

names.pop
names.shift

答案 3 :(得分:0)

我真的很喜欢这个解决方案:

 _, *names, _ = names

非常酷,不是吗?

另外,我会使用另一个变量(功能样式)

_, *new_names, _ = names

编辑:对不起我意识到@sawa已经发布了这个解决方案。