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?

StackOverflow https://stackoverflow.com/questions/4099651

  •  29-09-2019
  •  | 
  •  

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.

War es hilfreich?

Lösung

Neudefinition inspizieren in Puzzle und zeigt nur das, was Sie wollen.

Zum Beispiel:

def inspect
  "Puzzle with size #{rows.size}"
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top