如何确定我的代码是否在lua模块中运行?

时间:2018-03-20 02:51:23

标签: lua

我正在编写脚本testmodule.lua,并想检查是否从其他脚本导入/需要此文件或由lua testmodule.lua直接启动。

如果它是由命令行直接启动我可以做一些测试或运行一个main函数,否则只导出一些函数而什么也不做。

Python有一个__name__语句:

if __name__ == '__main__':
    main_entry()

在lua中有类似的东西吗?

在单个文件中编写shell util很有用,可以直接运行并由其他lua脚本导入。但是当一些脚本导入这个文件时,我不喜欢调用main函数。

1 个答案:

答案 0 :(得分:0)

您可以使用以下检查:

if pcall(debug.getlocal, 4, 1) then
  print("in package")
else
  print("in main script")
end

它检查第4级的第1个变量中是否有任何内容,这将是当前模块的调用者(如果需要),或者在主脚本的情况下是否为空。

请注意,它不区分requiredofileloadfile或其他类似的调用。您可能需要查看讨论检查这些调用的this recent thread on the Lua mail list以及其他一些替代方法。