关于奇怪的“尝试调用字段”抽屉“(表值)”错误

我大约一年前在这个项目上工作。我回来运行它时它会抛出一个错误,错误是“尝试调用字段”抽屉“(表值)”“。

这是抽屉的位置

local Renderer = {}

local num_of_layers = 2
local insert = table.insert
local remove = table.remove

function Renderer:create()
    local render = {}

    render.drawers = {}
    for i  = 0, num_of_layers do
        render.drawers[i] = {}
    end

    function render:addRenderer(obj, layer)
        local l = layer or 0
        insert(self.drawers(l), i, obj)
    end

    return render
end

return Renderer

这是它被调用的地方

local tlm = {}

function tlm:load()
     renderer:addRenderer(self)
     gameloop:addLoop(self)
end
点赞
用户2858170
用户2858170

这是不正确的:

insert(self.drawers(l), obj)

self.drawers不是函数而是一个table,因此像self.drawers(1)这样的函数调用会导致错误。

如果你想要使用Lua标准函数将一个元素插入到table self.drawers的位置l上,你应该调用:

table.insert(self.drawers, i, obj)

如果你想要替换位置l上的值,你只需要简单地写self.drawers[l] = obj

http://www.lua.org/manual/5.3/manual.html#pdf-table.insert

2016-06-17 07:34:57