Lua如何在self中通过字符串调用函数?

你如何在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

这将产生以下错误:

scenes/CardsScene.lua:83: attempt to call a nil value
点赞
用户734069
用户734069

self 不是魔法。它只是一个本地变量,和其他 Lua 变量没有区别。

如果你想通过一个字符串名称获取一个全局函数,你可以用这个字符串访问全局表:_G[string_name]_G 不是魔法,它只是一个表。

就像 self 一样,所以你可以通过名称获取到 self 的成员变量:self[string_name]。如果这代表一个函数,你就可以用函数调用语法来调用它:self[string_name]()

2016-05-03 02:55:42