Ruby, не можете конвертировать fixnum в массив? но это массив - PullRequest
1 голос
/ 29 января 2011

пропускная способность 3

я представляю матрицу 3x3 массивом 1x9

тест:

  test "the row checking to see if we have a winner (incorrect)" do
    board = Board.new

    board.state = [0,0,1,0,0,1,0,0,1]
    assert false ==board.check_rows_for_winner
  end

соответствующий код

  @board_layout = []

 def init_board
    @board_layout = Array.new(@@board_width * @@board_width)
  end

  def state=(custom_board)
    @board_layout = custom_board
  end


def check_rows_for_winner
  self.width.times do |row|
    if @board_layout.transpose[row].uniq.size == 1 then 
      return true
    end
  end

  return false
end

ошибка:

TypeError: can't convert Fixnum into Array
    app/models/board.rb:39:in `transpose'
    app/models/board.rb:39:in `check_rows_for_winner'
    app/models/board.rb:38:in `times'
    app/models/board.rb:38:in `check_rows_for_winner'

1 Ответ

2 голосов
/ 29 января 2011

Чтобы использовать @ array.tranpose, ваш @array должен быть массивом массивов.С обычным массивом вы получите это сообщение об ошибке.

Редактировать:

В своем тесте вы устанавливаете следующее для @board_layout:

 board.state = [0,0,1,0,0,1,0,0,1]

и когда вы делаете

@board_layout.transpose[row]

Выполучу сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...