无法使用加载文件或加载加载的预编译 lua 字节码



我已经使用 luac53 编译了我的 lua 代码并拥有字节码文件。问题是加载文件似乎不想加载它并返回 nil。

local func = loadfile("file.txt")//Returns nil

加载在以下之后也返回 nil:

local file = io.open("file.txt", "rb")
local str = file:read("*a")
file:close()
local func = load(str, "bt")//Returns nil

该文件在此处作为字符串加载,但加载或加载文件都没有执行任何操作。有谁知道为什么会这样?

发出错误的函数的标准 Lua 做法是返回nil后跟错误消息。您提供的 Lua 文件可能在加载时生成错误,因此它会返回该错误。但是你从不寻找第二个返回值。

assert在这里很有用,因为如果出现错误,它需要一个值进行测试,需要一个字符串来打印。因此,如果您执行assert(loadstring(...)),它将打印loadstring返回的错误(如果它出错)。作为奖励,assert将返回它给出的第一个参数,因此如果loadstring成功,assert(loadstring(...))将返回加载的块。

最新更新