gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:57:48 25 4
gpt4 key购买 nike

我正在写一个脚本testmodule.lua并想检查该文件是从另一个脚本导入/需要的还是由 lua testmodule.lua 直接启动的.

如果它是直接通过命令行启动的,我可以做一些测试或运行一个主函数,否则只是导出一些函数而不做任何事情。

Python 有一个 __name__陈述:

if __name__ == '__main__':
main_entry()

lua中有类似的东西吗?

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

最佳答案

您可以使用以下检查:

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

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

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

关于lua - 如何确定我的代码是否在 lua 模块中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49375638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com