Module 用函数编写合适的LUA5.1模块

Module 用函数编写合适的LUA5.1模块,module,lua,lua-5.1,Module,Lua,Lua 5.1,我正在使用一个嵌入了标准Lua5.1的程序,我正在尝试编写一个模块,我可以从中调用函数,但没有成功 当前的环境非常挑剔,如果我犯了错误,脚本将中断,但不会出现任何错误,因此我们开始: 我有类似的东西(在moduletests.lua中): 然后,我将尝试要求提供此服务,并将其称为: mts = require 'moduletests' --seems to cause no issues mts.prints() --breaks the scripts 通常,如果require函数不正确,

我正在使用一个嵌入了标准Lua5.1的程序,我正在尝试编写一个模块,我可以从中调用函数,但没有成功

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

我有类似的东西(在moduletests.lua中):

然后,我将尝试要求提供此服务,并将其称为:

mts = require 'moduletests' --seems to cause no issues
mts.prints() --breaks the scripts
通常,如果require函数不正确,脚本将中断。脚本与require配合得很好,所以我认为它是正确的,但是在任何调用print函数的尝试中,它都会中断

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

下面是我如何使用它的:

moses = require 'moses' --Works

local bok = moses.isInteger(6)
HUD.AddUpdateBoxText(tostring(bok), 700); --Works, outputs "true"
这很好,完全符合预期。有人能告诉我我的模块有什么不同或错误,或者对我如何制作一个更好的功能版本有什么建议吗

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

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

local ar = {}
function ar.prints()
    HUD.AddUpdateBoxText("Hello World!", 200) --Equivalent to print()
end
return ar

完美的这完美地回答了我的问题,非常容易理解,非常简洁!谢谢你,我真的很感谢你的帮助!完全有道理。:)
local ar = {}
function ar.prints()
    HUD.AddUpdateBoxText("Hello World!", 200) --Equivalent to print()
end
return ar