动态引用Lua表方法,传入的参数为null

时间:2019-04-07 14:57:05

标签: lua lua-table

我正在创建动态表方法引用,并尝试将单个参数传递给该方法。动态方法引用确实可以正常工作,并且按预期方式调用了table方法,但是我传递给该方法的完全不为零参数在该方法内部为nil。您能在这两行中指出我的错误吗?...

这是一个演示的小示例。在Ask: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 )

1 个答案:

答案 0 :(得分:4)

使用冒号运算符定义的函数将隐藏其他第一个self参数。 function Consider:Move(mons)function Consider.Move(self, mons)的语法糖。

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

您可能希望将Consider表传递为self

considerAction(Consider, mons)

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

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