在Ruby中,我可以限制向下钻取一个对象的量在IRB显示本身或使用.inspect时当呢?
问题描述:
我正在写一个类解决了具有包含指向Cells
指向回这些二维数组一些二维数组数独谜题。事情是这样的:在Ruby中,我可以限制向下钻取一个对象的量在IRB显示本身或使用.inspect时当呢?
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
在
irb
,IRB冻结起来。我修改一些代码,现在所以它没有做到这一点,但现在如果我这样做:
irb> p.rows
=> TONS OF SHIT GETS RETURNED
它输出成吨的嵌套指针大约需要20秒返回irb
提示。很多这必须做一些无限的指针,即:
p.rows[0][0].row[0].row[0].row[0]....
所以我不知道是否有是Ruby只返回此数组的一个浅表表示,因为所有的指针最终指向回的方式自己。
答
重新定义视察谜,只有你想要的显示。
例如:
def inspect
"Puzzle with size #{rows.size}"
end
注:'当你做'p puzzleObject'或拼图#inspect'将被调用'把puzzleObject.inspect'。 – Nakilon 2010-11-04 18:10:13
这个工程! @Nakilon,这是一件值得注意的事情,但是这解决了我的问题,因为'p.rows.inspect'调用了'Puzzle#inspect'。应当指出的是,'p.rows'的类型是'Array'所以猴子修补'Array'类的'inspect'方法也可以解决我的问题。 – DJTripleThreat 2010-11-04 18:31:17