可能重复:
Lua中的"主要"功能?
在Python中,您可以非常轻松地检查脚本是否被直接调用(并调用一些函数,如果它通常用于测试):
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
有没有办法在Lua中做同样的事情来检测它是直接运行(lua foo.lua)还是包含在另一个脚本(dofile('foo.lua'))中.
在以前主脚本文件中定义一些虚拟全局变量总是存在琐碎(和丑陋)的方式dofile('foo.lua'),并检查foo.lua它是否已定义,但如果有更好的方法可以做到这一点会很好.
在顶层,您可以检查是否debug.getinfo(2)为零
来自http://www.lua.org/manual/5.1/manual.html#pdf-debug.getinfo
你可以给一个数字作为函数的值,这意味着在给定线程的调用堆栈的level函数上运行的函数:level 0是当前函数(getinfo本身); level 1是调用getinfo的函数; 等等.如果function是一个大于活动函数数的数字,则getinfo返回nil.