我正在编写一个脚本testmodule.lua并想检查这个文件是从另一个脚本导入/需要的还是由lua testmodule.lua.
如果直接通过命令行启动,我可以做一些测试或运行一个主函数,否则只导出一些函数而不做任何事情。
Python 有一个__name__声明:
if __name__ == '__main__':
main_entry()
Run Code Online (Sandbox Code Playgroud)
lua中有类似的东西吗?
在单个文件中编写一个 shell util 很有用,它可以直接运行并由其他 lua 脚本导入。但是当一些脚本导入这个文件时,我不喜欢调用 main 函数。
您可以使用以下检查:
if pcall(debug.getlocal, 4, 1) then
print("in package")
else
print("in main script")
end
Run Code Online (Sandbox Code Playgroud)
它检查第 4 级的第 1 个变量中是否有任何内容,这将是当前模块的调用者(如果需要)或在主脚本的情况下什么都没有。
需要注意的是它不区分require,dofile,loadfile其他类似的电话或。您可能需要查看Lua 邮件列表上的这个最近的线程,该线程讨论了检查这些调用以及一些替代方法。