Lua从自己的字符串调用函数?

时间:2016-05-03 02:49:27

标签: lua

如何通过self上的Lua中的字符串调用函数名?

我尝试了类似问题(lua call function from a string with function name)中描述的技术,但这只涉及全局表或通过模块存在的调用函数;它不适用于self

以下是我尝试做的简化示例。

function CardsScene:onEnterFrame()
  if self.transition_complete then
    loadstring("self.basicMathInit")()
  end
end


function CardsScene:basicMathInit()
  print("Init has been called.")
end

这会导致以下错误。

scenes/CardsScene.lua:83: attempt to call a nil value

1 个答案:

答案 0 :(得分:4)

self不是魔法。它只是一个局部变量,与任何其他Lua变量没有区别。

如果要通过其字符串名称获取全局函数,则可以使用该字符串访问全局表:_G[string_name]_G不是魔术;它只是一张桌子。

就像self一样。因此,您可以使用完全相同的内容来获取self成员的名称:self[string_name]。如果它代表一个函数,你可以用函数调用语法调用它:self[string_name]()