Я пишу класс для решения головоломок судоку, который имеет несколько двумерных массивов, которые содержат указатели на Cells
, которые указывают на эти двумерные массивы. Как то так:
def class Sudoku
attr :rows, :columns, :blocks
def initialize
# build each of the rows, columns, and blocks with a 9x9 map of Cells
end
end
def class Cell
attr :value, :row, :column, :block
def initialize(row, column, block, value)
# set each pointer to its parent row, column and block etc
end
end
Проблема в том, что когда я делаю что-то вроде:
p = Puzzle.new
in irb
, irb зависает. Я изменил часть кода сейчас, чтобы он этого не делал, но теперь, если я это сделаю:
irb> p.rows
=> TONS OF SHIT GETS RETURNED
выводит тонны и тонны вложенных указателей и занимает около 20 секунд, чтобы вернуться к приглашению irb
. Многое из этого связано с некоторыми бесконечными указателями, т. Е .:
p.rows[0][0].row[0].row[0].row[0]....
Так что мне интересно, есть ли способ для Ruby просто вернуть поверхностное представление этого массива, поскольку все его указатели в конечном итоге указывают обратно на себя.