如果我在我的Lua脚本中有require
三个包含的文件,那么这些文件中的任何一个函数都可以看到(最重要的是,调用)任何其他函数吗?
我遇到调用函数调用其他函数的函数问题。我试图将各种函数放在其他文件中,然后include
将它们写入主文件中。
我认为它正在发挥作用,我的测试是否有说服力。
我的主线代码执行此操作...
require "SOME_REQUIRED_FILE_01"
require "SOME_REQUIRED_FILE_02"
require "SOME_REQUIRED_FILE_03"
XYZ = 0
File_02_Function_A()
我查看The Lua Site并找到THIS PAGE,但我对此并不完全清楚。
所有三个所需文件中的 EVERY 功能是否可以在所有三个文件中看到 EVERY OTHER 功能?
答案 0 :(得分:4)
require
与dofile
基本相同,除了避免多次加载同一文件的机制(以及一些其他有用的东西,如加载器)。这意味着,他们也可以设置全局变量(尽管它们不应该)。因此,如果在其中一个必需文件中设置全局变量,则可以在require函数的整个范围内看到全局变量。这也意味着在其他所需文件中。
话虽如此,在required
文件中设置全局变量并非最佳做法。最好返回一个包含模块内部导出的函数和变量的表。然后你会调用这样的函数:
local some_required_file_01 = require "SOME_REQUIRED_FILE_01"
local some_result_01 = some_required_file_01.some_function_01()