将对象推入数组会返回一个空数组

Pushing objects into an array is returning an empty array

问题

我有一个方法叫做队列,属于BoardClass那个returns一个空数组。我无法将修改后的对象推送到此数组。目前它 returns 是一个空数组。

def queue
  queue = []
end

功能说明

我有一个 rules 方法,它属于 Board Class 有条件地调用 queue_for_birthqueue_for_death

def rules(cell)
    if something
      cell.queue_for_birth
    else something_else
      cell.queue_for_death
    end
  end

此方法在 game_logic 方法中包含的每个块中多次调用,该方法也属于 Board Class。 每次 rules 被调用时,它 queues_for_birthqueues_for_death,它应该将该单元格实例添加到名为队列

的数组中
def game_logic(cells)
    cells.each_with_index do |cell,index|
      if index == 0
        rules(cell) #push to the queue
      end
      if index == 1
        rules(cell) #push to the queue
      end
    ...

这里是将单元添加到队列的逻辑所在,它属于 Cell Class,它继承自 Board

def queue_for_birth(queue)
  @will_survive = true
  queue << self
 end

但是,每当我调用 board.queue 时,都会返回一个空数组。 => []

将实例变量 queue 添加到面板 class 解决了这个问题

class Board
  def initialize(live_cell_count, queue)
    @live_cell_count = live_cell_count
    @queue = queue
  end

  def queue
    @queue
  end

在条件中插入 queue.push(cell) 成功将每个单元格附加到 queue 数组。

def rules(cell)
    if something
      cell.queue_for_birth
      @queue.push(cell)
    else something_else
      cell.queue_for_death
      @queue.push(cell)
    end
  end