In Ruby kann beschränke ich den Betrag nach unten einem Objekt des Bohrens wird bei der Anzeige selbst in irb oder bei der Verwendung von .inspect?
Frage
Ich schreibe eine Klasse für Sudoku-Rätsel zu lösen, die einige zweidimensionale Anordnungen hat, die Zeiger enthalten diesen Punkt zurück zu dieser zweidimensionalen Anordnungen Cells
. So etwas wie folgt aus:
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
Das Problem ist, dass, wenn ich so etwas wie:
p = Puzzle.new
in irb
friert irb auf. Ich habe einige der Code geändert jetzt so tut es nicht, dass aber jetzt, wenn ich tun:
irb> p.rows
=> TONS OF SHIT GETS RETURNED
Es gibt Tonnen und Tonnen von verschachtelten Zeigern und dauert etwa 20 Sekunden Aufforderung an den irb
zurückzukehren. Eine Menge davon hat mit einigen unendlich Zeiger heißt zu tun.
p.rows[0][0].row[0].row[0].row[0]....
Also ich frage mich, ob es einen Weg für Ruby ist nur eine flache Darstellung dieses Array zurück, da alle seine Zeiger am Ende auf sich selbst zurückweist.
Lösung
Neudefinition inspizieren in Puzzle und zeigt nur das, was Sie wollen.
Zum Beispiel:
def inspect
"Puzzle with size #{rows.size}"
end