Lua, Require, 可用函数
Posted
技术标签:
【中文标题】Lua, Require, 可用函数【英文标题】:Lua, Require, Available Functions 【发布时间】:2014-06-11 15:10:52 【问题描述】:如果我在我的 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函数? p>
【问题讨论】:
【参考方案1】: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()
【讨论】:
第一个所需文件中的函数可以调用第三个所需文件中的函数吗?我的问题是函数调用尚未在执行中遇到的函数,导致函数调用到一个 nil 值。 一般情况下是可以的,但是只有在第三个文件加载后才能调用。请注意,如果您遵循不设置任何全局变量的建议,也可以实现同样的效果。您可以在主文件中要求第三个文件,但您也可以在第一个文件中要求相同的文件并在本地调用函数。它更干净,并且需要确保您不会两次加载文件。 谢谢,知道了。在您的答案上点击了两次。以上是关于Lua, Require, 可用函数的主要内容,如果未能解决你的问题,请参考以下文章