如何通过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
答案 0 :(得分:4)
self
不是魔法。它只是一个局部变量,与任何其他Lua变量没有区别。
如果要通过其字符串名称获取全局函数,则可以使用该字符串访问全局表:_G[string_name]
。 _G
不是魔术;它只是一张桌子。
就像self
一样。因此,您可以使用完全相同的内容来获取self
成员的名称:self[string_name]
。如果它代表一个函数,你可以用函数调用语法调用它:self[string_name]()
。