首页 > 解决方案 > 将对象推入数组返回一个空数组

问题描述

问题

我有一个称为队列的方法,属于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 时,都会返回一个空数组。 => []

标签: arraysrubyqueueeachblock

解决方案


向板类添加一个实例变量queue解决了这个问题

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

推荐阅读