所以我有一个“堆栈级别太深”的错误,我很确定我知道是什么原因造成的。我正在开发一个基于图块的游戏,并且我拥有所有图块,并且为了方便(每次我需要使用寻路时省去查找它),每个图块都有一个包含 8 个邻居的“附近”数组。
但是,当我去打印一些对象进行调试时,我经常遇到“堆栈级别太深”的错误。我认为这是因为每个图块在“附近”数组中都有相邻的图块,然后它们引用原始图块,在尝试打印所有对象时创建一个循环。
我可以忍受这个,但如果我能把蛋糕也吃掉就更好了。我可以通过 id 或坐标引用图块来避免它,而不是直接引用对象。缺点是这意味着每次都要搜索对象。
那么,有没有办法维护我当前的代码,但防止“附近”数组在输出中打印,以便它正常停止?
希望这很清楚!当前代码:
class Tile
attr_accessor :type, :x, :y, :z, :nearby, :t_id
@type = 0
@@count = 0
def initialize(x, y, z, type)
@x = x
@y = y
@z = z
@t_id = @@count
@@count += 1
@nearby = []
@type = type
end
end