从表中检索的函数引用不接受任何参数

时间:2013-06-18 02:52:43

标签: lua

我有一个函数引用表,如下所示:

KLC.ChatCommandBank = {
test = KLC.TestFunction,
config = KLC.OpenInterfaceOptions,
option = KLC.OpenInterfaceOptions,
options = KLC.OpenInterfaceOptions,
help = KLC.PrintHelp
};

但是当f = "test"t是一个字符串表时,我会调用

KLC.ChatCommandBank[f](t);

然后是函数

function KLC:TestFunction(tab)
    print(tab);
end

nil的值为tab,尽管调用该函数时,t不是nil

我怀疑这是因为函数引用表没有定义参数;我一直无法找到谷歌的任何东西,我自己的修补无法解决它!任何输入赞赏

1 个答案:

答案 0 :(得分:2)

这是因为当函数定义为KLC:TestFunction(tab)时,它会获得一个隐含参数self,该参数引用它所调用的表。

当您将其称为KLC.ChatCommandBank[f](t)时,您需要明确传递某些内容来代替该参数:

KLC.ChatCommandBank[f](KLC, t)

或者,您可以将定义更改为local function KLC.TestFunction(tab)