在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 
+0

注:'当你做'p puzzleObject'或拼图#inspect'将被调用'把puzzleObject.inspect'。 – Nakilon 2010-11-04 18:10:13

+0

这个工程! @Nakilon,这是一件值得注意的事情,但是这解决了我的问题,因为'p.rows.inspect'调用了'Puzzle#inspect'。应当指出的是,'p.rows'的类型是'Array'所以猴子修补'Array'类的'inspect'方法也可以解决我的问题。 – DJTripleThreat 2010-11-04 18:31:17