gpt4 book ai didi

ruby - 在 Ruby 中,当在 irb 中显示自身或使用 .inspect 时,我能否限制对象向下钻取的数量?

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:15 25 4
gpt4 key购买 nike

我正在编写一个解决数独谜题的类,它有一些二维数组,其中包含指向指向这些二维数组的 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

irb 中,irb 卡住。我现在修改了一些代码,所以它不会这样做,但现在如果我这样做:

irb> p.rows
=> TONS OF SHIT GETS RETURNED

它输出成吨成吨的嵌套指针,大约需要 20 秒才能返回到 irb 提示符。其中很多与一些无限指针有关,即:

p.rows[0][0].row[0].row[0].row[0]....

所以我想知道是否有一种方法可以让 Ruby 只返回这个数组的浅层表示,因为它的所有指针最终都指向它自己。

最佳答案

在Puzzle中重新定义inspect,只显示你想要的。

例如:

def inspect
"Puzzle with size #{rows.size}"
end

关于ruby - 在 Ruby 中,当在 irb 中显示自身或使用 .inspect 时,我能否限制对象向下钻取的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com