Lua 如何将参数传递给表中的函数?

Lua 如何将参数传递给表中的函数?,lua,lua-table,Lua,Lua Table,首先,我坚持使用Lua5.0,因为我是为WowAPI(2006年构建的客户端)开发的。为什么折磨我自己?因为看到可能发生的事我很高兴 所以我的问题是: 我有一个表,其中包含一系列函数,例如: function Questie:UNIT_AURA(unitId) --log("UnitID: "..unitId) end 我有另一个函数,它应该自动路由到该函数(在某种程度上它确实如此) 在本例中,event是一个全局变量,它等于函数名,例如UNIT_AURA。arg1到arg10也是全局

首先,我坚持使用Lua5.0,因为我是为WowAPI(2006年构建的客户端)开发的。为什么折磨我自己?因为看到可能发生的事我很高兴

所以我的问题是: 我有一个表,其中包含一系列函数,例如:

function Questie:UNIT_AURA(unitId)
    --log("UnitID: "..unitId)
end
我有另一个函数,它应该自动路由到该函数(在某种程度上它确实如此)

在本例中,event是一个全局变量,它等于函数名,例如UNIT_AURA。arg1到arg10也是全局的,应该传递给事件导致的任何函数。 该函数调用得很好,但所有参数都为零(即使它们存在于
Questie:OnEvent
中)

所以我的问题是,我怎样才能让他们通过考试?显然,我做错了什么。

这是你的错误(在我看来)

-该声明相当于

function Questie.UNIT_AURA(self, unitId)
    --log("UnitID: "..unitId)
end
function Questie.OnEvent(self)
    local callback = Questie[event]
    callback(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)
end
你可以这样称呼它:

Questie.UNIT_AURA(Questie, unitId)
还是像这样

Questie['UNIT_AURA'](Questie, unitId)
Questie:UNIT_AURA(unitId)
还是像这样

Questie['UNIT_AURA'](Questie, unitId)
Questie:UNIT_AURA(unitId)
区别在于


好吧,那么

function Questie:OnEvent()
    Questie[event](arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)
end
-该声明相当于

function Questie.UNIT_AURA(self, unitId)
    --log("UnitID: "..unitId)
end
function Questie.OnEvent(self)
    local callback = Questie[event]
    callback(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)
end
您丢失了表作为第一个参数,并传递了arg1。
因此,内部单位光环
self
将是
unitId
,而
unitId
将是
nil

预期参数=
self
unitId

给定参数=
unitId
(仅限)

正确的调用如下所示:

function Questie:OnEvent()
    Questie[event](self, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)
end