访问 Lua 表的“属性”时出现“loop in gettable”Lua 错误

我有一个表示图表的 Lua 表,其中包含节点,这些节点可以包含一个“超图节点”,它可以递归地循环到自身。例如,一个超图节点包含一个 Lua 表 hypergraphnode,它是相同的超图节点。这会导致无限循环,我希望通过删除这些超图节点来摆脱这种情况。现在我编写了以下代码,其中 data 可以是任何种类的 Lua 表,但主要是表示节点的 Lua 表:

local function fixInfiniteRecursion(data)
    if type(data) == 'table' then
        if data['hypergraphnode'] ~= nil then
            data.hypergraphnode = nil
        end
    end
end

这应该能解决问题,但我收到一个错误,说

lua: src/serializer/serializer.lua:40: loop in gettable

但我不明白问题出在哪里。该错误指向第 if data['hypergraphnode'] ~= nil then 行。

点赞