动态引用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
我正在创建动态 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