2

我正在使用一个嵌入了标准 Lua 5.1 的程序,并且正在尝试编写一个可以从中调用函数但无济于事的模块。

当前环境非常挑剔,如果我犯了错误,脚本会中断但不会出现任何错误,所以我们开始吧:

我有这样的东西(在moduletests.lua中):

local _ = {}

function _.prints()
    HUD.AddUpdateBoxText("Hello World!", 200) --Equivalent to print()
end

然后我会尝试要求这个并调用它:

mts = require 'moduletests' --seems to cause no issues
mts.prints() --breaks the scripts

通常,如果 require 函数不正确,脚本会中断。这些脚本可以很好地满足要求,所以我认为它是正确的,但是在任何尝试调用 print 函数时它都会中断。

另一方面,我安装了另一个 lua 模块,并且能够成功地要求它并调用一个函数,这就是我为我的模块建模的内容。这是模块的代码

这是我使用它的方式:

moses = require 'moses' --Works

local bok = moses.isInteger(6)
HUD.AddUpdateBoxText(tostring(bok), 700); --Works, outputs "true"

这工作得很好,完全符合预期。有人可以告诉我我的模块有什么不同或错误,或者对我如何制作更好的功能版本有任何建议吗?

谢谢大家,我衷心感谢您的帮助!非常感激!

4

1 回答 1

2

在 Lua 模块中,你必须做return一些事情。您的代码不起作用的原因是因为您试图从模块返回的任何内容中调用方法,但是由于没有返回任何内容,因此只能预期出现错误。尝试返回表格:

local ar = {}
function ar.prints()
    HUD.AddUpdateBoxText("Hello World!", 200) --Equivalent to print()
end
return ar
于 2015-10-24T22:10:58.740 回答