如何以巧妙的方式删除一行中的第一个和最后一个元素?
我试过了:
names = %w[Go Go Go Power Rangers Go]
names.shift.pop
此操作失败,因为我相信,shift
和pop
都会返回删除的值,然后将其传递给以下函数,从而引发错误。
我也尝试使用delete_at
来完成这项工作,但它不允许使用数组参数,因此我不再需要将其作为单行程序。
有什么想法吗?
注意:我重视极简主义
答案 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已经发布了这个解决方案。