我正在编写脚本testmodule.lua
,并想检查是否从其他脚本导入/需要此文件或由lua testmodule.lua
直接启动。
如果它是由命令行直接启动我可以做一些测试或运行一个main函数,否则只导出一些函数而什么也不做。
Python有一个__name__
语句:
if __name__ == '__main__':
main_entry()
在lua中有类似的东西吗?
在单个文件中编写shell util很有用,可以直接运行并由其他lua脚本导入。但是当一些脚本导入这个文件时,我不喜欢调用main函数。
答案 0 :(得分:0)
您可以使用以下检查:
if pcall(debug.getlocal, 4, 1) then
print("in package")
else
print("in main script")
end
它检查第4级的第1个变量中是否有任何内容,这将是当前模块的调用者(如果需要),或者在主脚本的情况下是否为空。
请注意,它不区分require
,dofile
,loadfile
或其他类似的调用。您可能需要查看讨论检查这些调用的this recent thread on the Lua mail list以及其他一些替代方法。