我有一个函数引用表,如下所示:
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
。
我怀疑这是因为函数引用表没有定义参数;我一直无法找到谷歌的任何东西,我自己的修补无法解决它!任何输入赞赏
答案 0 :(得分:2)
这是因为当将函数定义为KLC:TestFunction(tab)
时,它会获得一个隐含参数self
,该参数引用它所调用的表。
当您将其称为KLC.ChatCommandBank[f](t)
时,您需要明确传递某些内容来代替该参数:
KLC.ChatCommandBank[f](KLC, t)
或者,您可以将定义更改为local function KLC.TestFunction(tab)
。