如何使用_G[x]()方法从字符串中调用函数的LUA实现方式

我在我的代码上遇到了问题,不知道怎么回事,我在网上搜索后,_Gx 方法被建议作为最好的方法,而不是类似 loadstring(x) 的方法...虽然我也可以用任何一种方法来进行,但是无论哪种方法都不能正常工作。我想要做的是,在ComputerCraft中,向海龟发送函数名称和参数,通过将两个值保存到表中并发送整个表进行操作,然后在海龟的程序中,有一个大的功能列表,并使用指令从发送的字符串调用它们并插入参数。我的错误是“尝试调用nil”,我不太理解为什么会这样说...提前感谢!

编辑

我根据要求将我的代码编辑下来,以显示即使剥离所有其他内容,这仍然会失败。我甚至可以通过完全将变量拿出来,将字符串直接放入_G中,来进一步简化它。即使这样做,它仍然会失败。我决定保留它,因为那正是我以后要使用它的方式。正常调用函数是没问题的。我正在使用版本Luaj-jse 2.0.3

function foo ()
  print(“HI!”)
end

print_VERSION
点赞
用户1847592
用户1847592

我不知道 rednet 是什么东西,但是看起来你将一个函数的名称传递给另一个 Lua VM,并且在那个 VM 的全局表中并没有这个函数(这个函数不存在)。

因此,将函数定义作为字符串传递,并由接收方使用 loadstring 执行它是唯一的解决方案。

2013-03-14 07:58:45