遇到"table index is nil"错误

我正在努力创建可以用名称 ID 同时调用的代码块。我决定使用主表格,其中包含 ID 和函数的表格。为此,我编写了 3 个函数

function hook.add(name, hookname, func)
    hooks[hookname[name]] = func
end
function hook.create(name)
    hooks[name] = {}
end
function hook.run(name)
    for _, func in pairs(hooks[name]) do
        func()
    end
end

hook.create("MainHook")
    local function func()
        print("working")
    end
    hook.add("todo", "MainHook", func)

但是它不起作用,而且会崩溃,出现以下错误

bin/hooks.lua:27: table index is nil

错误出现在

hooks[hookname[name]] = func

这一行,但我不知道为什么,因为即使我打印 hookname 和 name,也没有遇到空值。

如果您能帮助我,我会非常感激。

点赞
用户12918181
用户12918181

你的函数 hook.create 创建了一个空表格来保存名称,因此函数 hook.add 应该像这样:

function hook.add(name, hookname, func)
    -- 如果 hooks[hookname] 表不存在则创建
    hooks[hookname] = hooks[hookname] or {}
    -- 将函数添加到 hooks[hookname] 表中
    hooks[hookname][name] = func
end
2020-05-02 02:29:05