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

问题描述 投票:1回答:1

我正在创建一个动态表方法引用,并尝试将单个参数传递给该方法。动态方法引用确实有效,并且table方法被调用就像预期的那样,但是我传递给方法的完全不是nram参数在方法中是nil。你能在这两行中指出我的错误吗?...

这是一个小的工作示例,演示。在考虑:移动方法的第一行,mons是零

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 )
lua lua-table
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.