我只想在我的Lua脚本中调用一些特定的函数。该怎么做呢?

我只想在我的 Lua 脚本中调用特定的函数。

一个简单的脚本:

msg("hello")
function showamsgbox()
msg("123")
end

我只想让我的 C 应用程序调用 showamsgbox() 函数,但不运行 msg("hello"),因为当我加载这个脚本时它会显示一个 msgbox!所以如何做到避免这种情况?

PS:这只是一个示例。有时我希望让用户在我的程序中制作自己的插件,但我不希望他们在函数之外编写任何东西(我希望使用函数决定要做什么,例如函数 OnLoad() 表示在加载它时运行)。如果有些内容在函数之外,我就不能控制它们!

原文链接 https://stackoverflow.com/questions/9616522

点赞
stackoverflow用户107090
stackoverflow用户107090

你做不到。当脚本运行时,它会定义两个变量:ageta。请牢记,function geta()...endgeta=function()...end 相同。

2012-03-08 11:21:14
stackoverflow用户499395
stackoverflow用户499395

当在一个 lua_State 中最初评估脚本时,a = 9 将被调用。

如果您重用该 lua_State 实例,则可以检索该函数并调用它,而无需重新初始化 a。

2012-03-08 20:51:12
stackoverflow用户107090
stackoverflow用户107090

似乎您想要对脚本进行沙盒处理。在运行脚本之前,请为其提供一个适当的独立环境。这个环境可以是空的,也可以包含您希望它们使用的函数引用。他们可以在自己的环境中随意编写,而不会影响您的环境。然后只需获取 OnLoad 或您想要调用的其他用户函数的值并调用它。

2012-03-09 16:48:39