使用Lua中的for in pairs方法基于另一个表更新表。

问题在客户端代码上(源代码:cl_hob.lua

net.Receive("HobNetMsg", function(len)
    local Queue = {}
    Queue = net.ReadTable()
    for I = 1 , #Queue do
        local index = Queue[I]["index"]
        for Key , Value in pairs(Queue[I]) do
            HBeamTable[index][Key] = Value
        end
    end
end)

这段代码应该接收来自我的服务器端代码hob.lua的网络消息,其中包含我要更新客户端表HBeamTable的所有更新的表。上述代码的作用是查看接收到的表格,然后根据其中的内容使用新数据更新主表中的相关表格。

新数据不必包含每个字段的信息,但主表必须对每个索引都有完整的数据,否则呈现函数会出现问题。

然而上面的代码输出了错误:

/cl_hob.lua:16: attempt to index a nil value

我没有看到上面的代码有任何明显的问题,因此这个错误真的很令人困惑...

点赞
用户1190388
用户1190388

错误报告显示在第16行。你提供的代码片段与此无关。

line #14,你有:

for I = 0 , #Changes do

但是 lua 表不是从0开始索引的。这导致了错误。

2015-03-13 12:06:23