我已经使用luac53编译了lua代码,并拥有字节码文件。问题是loadfile似乎不想加载它并返回nil。
newFrame
在以下情况之后,Load也返回nil:
sourceSets {
debug.java.srcDirs += 'build/generated/source/proto/debug/java'
debug.java.srcDirs += 'build/generated/source/proto/debug/grpc'
debug.java.srcDirs += 'build/generated/source/proto/debug/javalite'
release.java.srcDirs += 'build/generated/source/proto/release/java'
release.java.srcDirs += 'build/generated/source/proto/release/grpc'
release.java.srcDirs += 'build/generated/source/proto/release/javalite'
main.proto.srcDirs += 'src/main/proto'
main.kotlin.srcDirs 'build/generated/source/proto'
}
文件在此处以字符串形式加载,但load或loadfile均未执行任何操作。有人知道为什么会这样吗?
答案 0 :(得分:2)
发出错误的函数的标准Lua做法是返回nil
,后跟错误消息。您提供的Lua文件可能在加载时生成错误,因此将其返回。但是,您永远不会寻找第二个返回值。
assert
在这里很有用,因为如果有错误,它需要测试一个值和一个字符串来打印。因此,如果您执行了assert(loadstring(...))
,它会打印出loadstring
返回的错误(如果出错了)。另外,assert
将返回给定的第一个参数,因此,如果loadstring
成功,则assert(loadstring(...))
将返回已加载的块。