使用函数编写适当的 Lua 5.1 模块

Writing a proper Lua 5.1 module with functions

我正在使用一个嵌入了标准 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 函数不正确,脚本会中断。这些脚本可以很好地满足要求,所以我认为它是正确的,但是在任何调用打印函数的尝试中它都会中断。

另一方面,我安装了另一个 lua 模块,并且能够成功地要求它并调用一个函数,这就是我为模块建模的原因。 This is the module's code.

以下是我的使用方法:

moses = require 'moses' --Works

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

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

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

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

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