我已经使用 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(...))
将返回加载的块。