Lua 从字符串中调用函数?

big*_*can 2 lua

如何在 Lua 上通过字符串调用函数名self

我尝试了类似问题中描述的技术(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
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误。

scenes/CardsScene.lua:83: attempt to call a nil value
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 5

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

如果你想通过字符串名获得一个全球性的功能,您将与该字符串访问全局表:_G[string_name]_G不是魔法;这只是一张桌子。

就像self. 因此,您将执行完全相同的操作来访问self按名称的成员:self[string_name]。如果代表一个功能,您将与函数调用语法调用它:self[string_name]()