动态引用Luatable方法,传入的param为null

Dynamic reference to Lua table method, param passed in is null

我正在创建动态 table 方法引用并尝试将单个参数传递给该方法。动态方法引用确实有效,并且 table 方法按预期被调用,但是 completely not nil param 我传递给该方法的方法内部为 nil。你能指出我在这两行中的错误吗?...

这是一个演示的小示例。在 Consider:Move 方法的第一行,mons 是 nil

local Consider = {}
function Consider:Move( mons  ) 
    print( 'Mons ' .. mons.type .. ' considering Move...')
    actionChosen.score = 0
    return actionChosen
end

local mons = { type = 'Blue' }
local actionPref = 'Move'
local considerAction = Consider[actionPref]
print( 'MonsterAI:chooseAction mons: ', mons.type )
local actionTest = considerAction( mons )

使用冒号运算符定义的函数隐藏了一个额外的第一个 self 参数。 function Consider:Move(mons)function Consider.Move(self, mons).

的语法糖

调用函数 considerAction(mons) 设置隐藏的 self 参数而不是所需的参数。

您可能希望将 Consider table 作为 self:

considerAction(Consider, mons)

或者,如果不需要,也可以使用点运算符定义函数 self:

function Consider.Move(mons)
  print('Mons ' .. mons.type .. ' considering Move...')
end