所以我有一個「堆棧級別太深」的錯誤,我敢肯定,我知道是什麼原因造成的。我正在開發基於瓦片的遊戲,並且我有所有的瓦片,並且爲了方便起見(每次需要使用路徑查找時都需要查看它),每個瓦片都有一個包含8個鄰居的「附近」數組。紅寶石避免「堆棧級別太深」與鏈接
但是,當我打印出一些用於調試的對象時,我經常遇到「堆棧級別太深」的錯誤。我認爲這是因爲每個圖塊在「附近」數組中都有相鄰的圖塊,然後再引回原始圖塊,在嘗試打印所有對象時創建一個循環。
我可以忍受這個,但如果我可以吃我的蛋糕並且吃它,它會好得多。我可以通過使用id或座標來引用tile來避免它,而不是直接引用對象。缺點是這意味着每次都要搜索對象。
那麼,有沒有辦法維護我當前的代碼,但防止「附近」陣列輸出打印,以便它停止理智?
希望這是明確的!當前代碼:
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
你應該建立一個樹,並防止葉子從引用自己的根 – apneadiving