我有一个数组实例变量。我想删除最后两个元素和前三个元素。然后我想删除任何值= nil。
虽然下降没有保存:
@attribute_names = []
<% @attribute_names = word.attribute_names %>
<% @attribute_names.pop(2) %>
<% @attribute_names.drop(3) %>
<td> <%= @attribute_names %> </td>
pop正在运行但是drop数据表中的drop不起作用。那是为什么?
答案 0 :(得分:2)
方法pop
从数组中删除元素,并将其返回。
方法drop
返回一个没有X个第一个元素的新数组 - 接收器保持不变!
如果要删除接收器的前三个元素,可以使用slice!
:
a = [1, 2, 3, 4, 5, 6]
a.pop
# => 6
a
# => [1, 2, 3, 4, 5]
a.drop(3)
# => [4, 5]
a
# => [1, 2, 3, 4, 5]
a.slice!(0, 3)
# => [1, 2, 3]
a
# => [4, 5]
答案 1 :(得分:1)
Array#[range]会这样做:
@attribute_names = @attribute_names[2...-3]
考虑将此逻辑移动到辅助方法中,在辅助方法中可以给出一个名称来解释为什么跳过某些元素。