数组丢弃不保存

时间:2014-06-24 19:54:34

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个数组实例变量。我想删除最后两个元素和前三个元素。然后我想删除任何值= nil。

虽然下降没有保存:

@attribute_names = []

<% @attribute_names = word.attribute_names %>
  <% @attribute_names.pop(2) %>
  <% @attribute_names.drop(3) %>
<td> <%= @attribute_names %> </td>

pop正在运行但是drop数据表中的drop不起作用。那是为什么?

2 个答案:

答案 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]

考虑将此逻辑移动到辅助方法中,在辅助方法中可以给出一个名称来解释为什么跳过某些元素。