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

时间:2019-11-27 16:15:06

标签: arrays ruby queue each block

问题

我有一个名为queue的方法,该方法属于Board类,它返回一个空数组。我在将修改后的对象推送到此数组时遇到麻烦。当前,它返回一个空数组。

def queue
  queue = []
end

功能介绍

我有一个rules方法,该方法属于Board类,有条件地调用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方法中包含的每个块中多次调用此方法。 每次调用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类,该类继承自Board

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

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

1 个答案:

答案 0 :(得分:1)

将实例变量queue添加到board类可以解决此问题

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